GAE Django - нерелевантная расширенная модель пользователя - PullRequest
1 голос
/ 07 апреля 2011

Я пытаюсь расширить пользовательские модели своей пользовательской моделью, наследуя ее следующим образом:

class Profile(User):
   ...

Я хотел бы добавить свои настраиваемые поля в модель User, но django nonrel завершается с ошибкой:

DatabaseError: Multi-table inheritance is not supported by non-relational DBs.

Так, как я могу решить эту проблему? Мне определенно нужны мои настраиваемые поля в модели User.

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

Вместо переопределения пользовательской модели вы должны создать другой класс, содержащий дополнительные поля и связать его с пользовательской моделью с помощью отношения 1: 1.

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    nickname = models.CharField(max_length=50)
    ...
    ...
1 голос
/ 18 сентября 2011

Я хотел, чтобы объект request.user был обычным объектом User, но с добавленными полями.Принятый ответ этого не допускает, поскольку в UserProfile есть член «пользователь», а не пользователь.

В этой статье объясняется, как вместо этого наследовать от пользователя.

Коротко о шагах:

  • Сделать CustomUser наследуемым от пользователя
  • Настроить пользовательский бэкэнд аутентификации для возврата CustomUser

Еще не пробовал.

1 голос
/ 07 апреля 2011

Нельзя сделать что-то подобное в google-app-engine. Если вы хотите иметь отношения в вашей модели. Вам следует денормализовать вашу модель таким образом, чтобы этого можно было достичь способом appengine. Чтобы узнать больше о моделировании в appengine. Вы можете перейти по следующим ссылкам.

моделирование в appengine

Ежедневное профет моделирование в appengine

...