#django #django-models
Вопрос:
Это для практического проекта, который я создаю для изучения Джанго. Сайту необходимо будет отслеживать определенные данные о пользователе. Должен ли я настроить модель пользователя по умолчанию? Или создайте новую модель, например —
class UserData(models.Model):
'''holds user info'''
owner = models.ForeignKey(User)
# data
Я не мог найти четкого ответа.
Ответ №1:
Это действительно зависит от обстоятельств. Я бы рекомендовал сохранить User
модель небольшой и поместить большую часть дополнительной информации в какую Profile
-либо модель. Однако есть некоторые важные вещи, которые вы, возможно, захотите разместить в пользовательской модели, например:
user_type
поле — у вас может быть несколько моделей профилей (например, CustomerProfile, VendorProfile и т. Д.), И вам нужен способ различать пользователей и предоставлять им соответствующий доступ- Что — то, связанное с авторизацией, например
require_2fa
, поле - Если вы начинаете новый проект и не ожидаете много дополнительной информации, вы можете сохранить ее в
User
модели просто для простоты, особенно если вы уже настраиваете ее (т. Е. заменяетеusername
наemail
)
Ответ №2:
Пользователи являются особенными, поэтому лучше использовать django.contrib.auth.models.AbstractUser
модель поведения пользователя по умолчанию и добавлять туда свои пользовательские поля.
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
pass
Я написал статью об этом, и я думаю, что это было бы полезно в данном случае.