Skip to main content
 首页 » 编程设计

python之Django 完整性错误 1452

2024年08月29日26yjmyzz

我有一个应用程序,它使用我定义的用户类运行良好。几周后,我意识到我需要用户身份验证,并决定改用 django 的 User 类(我刚开始时并不真正理解它是如何工作的,因为我对 Django 还很陌生)。我摆脱了与自定义用户类的 ForeignKey 关系,并添加了与 django.contrib.auth.models.User 的 ForeignKey 关系,但是现在当我使用管理页面添加新对象时,我得到:

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  

任何人都可以给我任何关于这个错误的解释,以及为什么我现在使用内置用户而不是我自己的类时得到它?

请您参考如下方法:

可能发生的情况是您更新了模型以包含 Django 的用户定义,但尚未更新数据库。

IntegrityErrors 表示如果您执行查询,将违反数据库中的某些约束。我确信更新数据库模式 a.k.a python manage.py syncdb 会成功。

如果您能够删除架构并重新创建,则可能会解决问题。如果没有,只需更新您的模型所代表的修改后的表格。

希望这对您有所帮助!