我已经看到人们以两种方式使用默认的django用户模型作为外键:
1)
from django.contrib.auth.models import User
user = models.ForeignKey(User)
2)
user = models.ForeignKey('auth.User')
但是在实现一对一关系时,我仅看到:
from django.contrib.auth.models import User
user = models.ForeignKey(User)
对此我有两个问题:
1)定义外键的两种方法实际上是相同的吗?
2)您可以使用user = models.OneToOneField('auth.user')
吗?
答案 0 :(得分:1)
两者都有效。但是,混淆来自于在Django 1.5中在添加AUTH_USER_MODEL
之前使用'auth.user'
的事实。
现在,在您的代码中,我实际上建议不要使用两者。而是遵循Django recommendation并使用settings.AUTH_USER_MODEL
user = models.ForeignKey(settings.AUTH_USER_MODEL)
或
user = models.OneToOneField(settings.AUTH_USER_MODEL)
这将避免您的代码在AUTH_USER_MODEL
设置已更改为其他用户模型的项目中停止工作。