【问题标题】:Django ForeignKey to AbstractBaseUserDjango ForeignKey 到 AbstractBaseUser
【发布时间】:2015-02-24 09:08:48
【问题描述】:

我正在尝试设置一个应用来处理有关注册用户的评论。因此,在我的 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

【问题讨论】:

  • 您的个人资料应用程序是否包含在 INSTALLED_APPS 中?
  • 是的。用户类在注册用户等方面工作得很好。
  • 您可能需要将初始配置文件迁移作为依赖项添加到评论中。
  • 是否有可能在添加自定义 AUTH_USER_MODEL 之前迁移了您的数据库?如果是这样,我建议您删除数据库,删除所有现有迁移并从头开始(再次运行 makemigrations 并迁移您的数据库)。
  • 正确的 nejc92。解决了。​​

标签: python django django-models


【解决方案1】:

nejc92 评论是正确的。在我第一次设置 AUTH_USER_MODEL 之前,我已经迁移了我的数据库。

我删除了整个数据库并为所有应用创建了新的迁移,并从头开始重新迁移所有内容。然后就成功了。

对我来说听起来像是一个错误(?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2023-03-29
    相关资源
    最近更新 更多