Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2014 15:55:32

amator
Зарегистрирован: 2014-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django.Admin доступ к сессии

Здравствуйте. Прошу не пинать, только начал знакомиться с django и многих вещах еще туплю. Подскажите, если кто знает, с проблемой.
Я в своем проекте переопределяю модель Group админки в файле models.py:
class MyGroup(Group):

class Meta:
# db_table = ‘auth_group’
proxy = True

def save(self, force_insert=False, force_update=False, using=None):
# do something
super(Group, self).save()

def delete(self, *args, **kwargs):
# do something
super(Group, self).delete(*args, **kwargs)

И в местах #do something мне надо получить доступ к данным в сессии. Как это сделать?

Офлайн

#2 Сен. 8, 2014 16:44:54

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Django.Admin доступ к сессии

мне кажется, что вы что-то не так делаете.
имхо, в моделях не должно быть логики, связанная с сессией.

Офлайн

#3 Сен. 8, 2014 16:55:05

amator
Зарегистрирован: 2014-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django.Admin доступ к сессии

Возможно. Но как сделать по другому эту задачу, пока не придумал.

Офлайн

#4 Сен. 8, 2014 18:10:51

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Django.Admin доступ к сессии

Вы не можете получить доступ к request (и session) из модели.
Но можно переопределить админку для Group, User или вашей модели и передать нужный параметр в метод.

admin.py

from django.contrib import admin
from MyApp.models import MyModel
 
 
class MyModelAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.do_something_on_save(request)
        super(MyModelAdmin, self).save_model(request, obj, form, change)
 
    def delete_model(self, request, obj):
        obj.do_something_on_delete(request)
        super(MyModelAdmin, self).delete_model(request, obj)
admin.site.register(MyModel, MyModelAdmin)

models.py
class MyModel(models.Model):
    ...
 
    def do_something_on_save(self, request):
        pass
 
    def do_something_on_delete(self, request):
        pass

Отредактировано GreyZmeem (Сен. 8, 2014 18:12:05)

Офлайн

#5 Сен. 9, 2014 11:15:25

amator
Зарегистрирован: 2014-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Django.Admin доступ к сессии

Спасибо большое!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version