ModelName (django.contrib.auth.models.User) против ModelName (models.Model) - PullRequest
1 голос
/ 20 ноября 2011

Я занимаюсь разработкой проекта django.Я создал несколько приложений, некоторые из которых относятся к пользовательской модели, например, у меня есть приложение каналов, которое обрабатывает пользовательские каналы, и другое приложение, которое имеет дело с дополнительными данными пользователя, такими как возраст, контакты и друзья.для каждого из них я создал таблицу, которая должна быть подключена к модели User, которую я использовал для хранения и аутентификации пользователей.

Я нашел два способа решения этой проблемы.Один из них заключается в расширении модели User таким образом:

ModelName(User):
    friends = models.ManyToMany('self')
    .....

Второй заключается в добавлении внешнего ключа в новую таблицу следующим образом:

ModelName(models.Model):
    user = models.ForeignKey(User, unique=True)
    friends = friends = models.ManyToMany('self')
    ......

Не могу решитьчто использовать в этом случае.другими словами, каковы основные различия между ними?

1 Ответ

2 голосов
/ 21 ноября 2011

В любом случае технически будет работать.Подклассы модели User фактически аналогичны подклассам models.Model, а затем включают строку user = models.OneToOneField(User).

Тем не менее, книга Django стоит того, чего она стоитmodels.Model маршрут.Я также согласен с тем, что это синтаксически более просто.

Я также хотел бы указать на , хранящую дополнительную информацию о пользователях , в документации по Django, которая научит вас настройке AUTH_PROFILE_MODULEи метод get_profile().Лучше всего использовать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...