Django: When extending User, better to use OneToOneField(User) or ForeignKey(User, unique=True)?разница между ForeignKey и простирающейся пользовательского класса/модели в Django
Я прошел через эту тему и обнаружил, что ForeignKey (с unique=True
) лучше, чем OneToOneField, но что о расширении самого класса, т.е. вот пример
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
# some additional fields
ИЛИ
class UserProfile(User):
# some additional fields
Разница между этими двумя подходами и плюсы/минусы и которые один я должен использовать?
EDIT: я могу использовать AbstractUser
а
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
phone_no = models.CharField(max_length=10, blank=True)
, а затем упомянул AUTH_USER_MODEL = 'myapp.User'
в settings.py
основной проблемой является то, что подход, который я должен использовать, расширив класс или ForeignKey?
Дубликаты:
What's the difference between OneToOne and Subclassing a model in Django
Django Model Inheritance versus OneToOne field
MORE EDIT
Забудьте о ForeginKey или OneToOne, предположим, только один из этих двух существует, теперь сравните это с простирающейся/подклассов подход
Поскольку вы знаете, что один-на-один лучше, чем использование ForeignKey, почему * * вы используете ForeignKey в своем примере? –
мой плохой, отредактировал вопрос –
После вашего редактирования, как вы поддерживаете, что «a ForeignKey' лучше, чем« OneToOneField »? – Wtower