在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文件,位于app / 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表,但它没有用。任何帮助将不胜感激。
答案 0 :(得分:1)
我解决了这个问题 - 问题是我在使用auth_user进行迁移后尝试迁移到自定义用户模型。这意味着auth_user没有正确更新。我不得不刷新并重新同步数据库,以便初始迁移捕获自定义用户模型。