我有一个应用程序,它使用我定义的 User 类运行良好。经过几周的研究,我意识到我需要用户身份验证,并决定使用 django 的 User 类来代替(当我开始时,我并没有真正理解它是如何工作的,因为我对 Django 很陌生)。我摆脱了与自定义 User 类的外键关系,并添加了与 django.contrib.auth.models.User 的外键关系,但是现在当我使用管理页面添加新对象时,我得到:
Exception Type: IntegrityError at /admin/po/purchaseorder/add/
Exception Value: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`po`.`po_purchaseorder`, CONSTRAINT `django_user_id_refs_id_fe5f38af` FOREIGN KEY (`django_user_id`) REFERENCES `auth_user` (`id`))')
我真的不明白这个错误。这是相关的类代码:
from django.contrib.auth.models import User
class PurchaseOrder(models.Model):
user=models.ForeignKey(User)
request_number = models.AutoField(primary_key=True)
#More fields
任何人都可以给我任何关于此错误的解释,以及为什么我现在使用内置的 User 而不是我自己的类而得到它?
最佳答案
可能发生的情况是您更新了模型
以包含 Django 的用户定义,但尚未更新数据库。
IntegrityErrors
意味着如果执行查询,数据库中将违反某些约束。我确信更新数据库架构(又名python manage.pysyncdb
)就能解决问题。
如果您能够删除架构并再次创建,那么这可能会解决问题。如果没有,只需更新您的模型所代表的修改表。
希望这有帮助!
关于python - Django 完整性错误 1452,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17279103/