Django IntegrityError 1452

时间:2013-06-24 15:21:23

标签: python django django-users django-contrib

我有一个应用程序使用我定义的User类很好地工作。经过几个星期的努力,我意识到我需要用户身份验证,并决定使用django的User类(当我开始时,我真的不明白这是如何工作的,因为我对Django很新)。我删除了与自定义User类的ForeignKey关系,并向django.contrib.auth.models.User添加了ForeignKey关系,但是现在当我使用Admin页面添加新对象时,我得到:

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 

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

1 个答案:

答案 0 :(得分:3)

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

IntegrityErrors表示如果执行查询,数据库中将违反某些约束。我确定更新数据库架构 a.k.a python manage.py syncdb可以解决问题。

如果您能够删除架构并再次创建,那么可能会解决它。如果没有,只需更新模型所代表的修改后的表格。

希望这有帮助!