Добавление метода в профили Django - PullRequest
0 голосов
/ 21 января 2012

Я расширил модель User в Django, используя Профили.Как вы знаете, создание нового пользователя не создает новый профиль, связанный с этим пользователем, поэтому нам нужно добавить вспомогательный метод, примерно такой:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    field_to_be_updated = models.DateTimeField(auto_now_add=True)

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u))

Это прекрасно работает, но я быхотел бы иметь возможность вызывать метод, скажем, update_a_field в классе UserProfile таким образом, чтобы я мог сделать User.objects.all[0].profile.update_a_field() или что-то в этом роде.

Я пытался создать класс Manager to UserProfile, чтобы нетпомогло.Он просто не распознает методы, которые я прикрепляю к классу.Кажется, что UserProfile не является обычной моделью в том смысле, что он не может быть принят UserProfile.objects ...

Итак, как я могу добавить методы для обновления экземпляра UserProfile?Должен ли я добавить метод в модель User и затем получить доступ к UserProfile таким образом?.

1 Ответ

1 голос
/ 21 января 2012

Я не совсем уверен, почему, но мой опыт:

НЕ РАБОТАЕТ

user.profile.field = "value"
user.profile.save()

РАБОТАЕТ

profile = user.profile
profile.field = "value"
profile.save()
...