【问题标题】:IntegrityError after customizing user model自定义用户模型后的 IntegrityError
【发布时间】:2016-03-19 10:47:41
【问题描述】:

在 Django Oscar 中自定义我的用户模型后,我收到以下错误消息:

IntegrityError at /
insert or update on table "basket_basket" violates foreign key constraint "basket_basket_owner_id_74ddb970811da304_fk_auth_user_id"
DETAIL:  Key (owner_id)=(5) is not present in table "auth_user".

为了自定义我的用户模型,我按照说明here

首先,我编写了以下 models.py 文件,位于我的项目目录中的 apps/user/models.py 中。

from django.db import models
from oscar.apps.customer.abstract_models import AbstractUser
from django.contrib.postgres.fields import ArrayField

class User(AbstractUser):
    acct_bal = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    purchased_items = ArrayField(models.IntegerField(), default=list)

我的想法是,我希望用户有一个帐户余额(我稍后将用于付款)以及代表已购买商品的产品编号列表。

在制作完models.py之后,我将安装的应用编辑如下:

INSTALLED_APPS = [...
'shopworld.apps.user',
] + get_core_apps()

然后把这个放在我的settings.py的底部:

AUTH_USER_MODEL = 'user.User'

然后我进行了 ./manage.py 迁移,但由于某种原因,我收到了此错误消息。我还尝试按照here 的建议删除 django_admin_log 表,但它不起作用。任何帮助将不胜感激。

【问题讨论】:

  • 当您输入./manage.py migrate 时收到什么错误消息? get_core_apps() 是做什么的?
  • 我没有收到错误消息 - 它可以工作 - 但它不能解决 IntegrityError。它说没有要迁移的新更改。 get_core_apps() 获取 Oscar 应用程序。

标签: django django-oscar


【解决方案1】:

我解决了这个问题 - 问题是我在使用 auth_user 完成迁移后尝试迁移到自定义用户模型。这意味着 auth_user 没有正确更新。我必须刷新并重新同步数据库,以便初始迁移捕获自定义用户模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 2018-01-22
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2015-09-30
    相关资源
    最近更新 更多