Форум сайта python.su
Здравствуйте. Прошу не пинать, только начал знакомиться с 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 мне надо получить доступ к данным в сессии. Как это сделать?
Офлайн
мне кажется, что вы что-то не так делаете.
имхо, в моделях не должно быть логики, связанная с сессией.
Офлайн
Возможно. Но как сделать по другому эту задачу, пока не придумал.
Офлайн
Вы не можете получить доступ к 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)
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)
Офлайн
Спасибо большое!!!
Офлайн