При использовании оболочки, это меня смутило (разрешения не отражают изменения):Понимания поведения Джанго модели сохранить
>>> user = User.objects.get(username='test')
>>> user.get_all_permissions()
set([])
>>> p = Permission.objects.get(codename="add_slide")
>>> user.user_permissions.add(p)
>>> user.save()
>>> user.get_all_permissions()
set([])
>>> user = User.objects.get(username='test')
>>> user.get_all_permissions()
set([u'slides.add_slide'])
Почему объект пользователя не обновляется при сохранении?
Есть ли способ сохранить и обновить объект?
Так что объясняет, что происходит, но на самом деле не почему? или лучший способ обновить объекты в памяти с изменениями на диске? – Doug
Приведенный вами пример - это особый случай, потому что метод get_all_permissions() ', который является методом, зависящим от модели пользователя, использует кеширование. Если вы используете более общие методы/свойства модели Django, вы обнаружите, что они ведут себя более интуитивно и будут обновляться, когда вы ожидаете их. –