Django ForeignKey 到 AbstractBaseUser
Django ForeignKey to AbstractBaseUser
我正在尝试设置一个应用程序来处理有关注册用户的评论。所以在我的 Review 模型中,我想为我的 User 模型设置一个 ForeignKey。
我正在使用如下所示的自定义用户配置文件:
#In /profiles/models.py
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
company = models.CharField(default="", max_length=200)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['company']
我已将其包含在 settings.py AUTH_USER_MODEL = "profiles.MyUser" 中。它适用于注册、创建用户等。所以我知道它的工作原理。
在我的评论模型中,我写了以下内容:
class Review(models.Model):
company = models.ForeignKey(settings.AUTH_USER_MODEL)
reviewer = models.ForeignKey(Reviewer)
rating = models.IntegerField(default=0)
review = models.TextField()
pub_date = models.DateTimeField('date published')
而不是 settings.AUTH_USER_MODEL 我也尝试写 profiles.MyUser, 'profiles.MyUser' 和 MyUser.
我可以成功使用python manage.py makemigrations reviews
命令。但是当我 python manage.py migrate
时,无论我使用上面的哪个版本,我都会出错。
我得到的错误如下:
ValueError: Lookup failed for model referenced by field reviews.Review.company: profiles.MyUser
nejc92 评论正确。在我第一次设置 AUTH_USER_MODEL 之前,我已经迁移了我的数据库。
我删除了整个数据库并为所有应用程序创建了新的迁移,并从头开始重新迁移了所有内容。然后它起作用了。
对我来说这听起来像个错误(?)。
我正在尝试设置一个应用程序来处理有关注册用户的评论。所以在我的 Review 模型中,我想为我的 User 模型设置一个 ForeignKey。
我正在使用如下所示的自定义用户配置文件:
#In /profiles/models.py
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
company = models.CharField(default="", max_length=200)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['company']
我已将其包含在 settings.py AUTH_USER_MODEL = "profiles.MyUser" 中。它适用于注册、创建用户等。所以我知道它的工作原理。
在我的评论模型中,我写了以下内容:
class Review(models.Model):
company = models.ForeignKey(settings.AUTH_USER_MODEL)
reviewer = models.ForeignKey(Reviewer)
rating = models.IntegerField(default=0)
review = models.TextField()
pub_date = models.DateTimeField('date published')
而不是 settings.AUTH_USER_MODEL 我也尝试写 profiles.MyUser, 'profiles.MyUser' 和 MyUser.
我可以成功使用python manage.py makemigrations reviews
命令。但是当我 python manage.py migrate
时,无论我使用上面的哪个版本,我都会出错。
我得到的错误如下:
ValueError: Lookup failed for model referenced by field reviews.Review.company: profiles.MyUser
nejc92 评论正确。在我第一次设置 AUTH_USER_MODEL 之前,我已经迁移了我的数据库。
我删除了整个数据库并为所有应用程序创建了新的迁移,并从头开始重新迁移了所有内容。然后它起作用了。
对我来说这听起来像个错误(?)。