2

我有一个使用我定义的用户类运行良好的应用程序。在为此工作了几个星期后,我意识到我需要用户身份验证,并决定使用 django 的 User 类(当我开始时我并不真正理解它是如何工作的,因为我对 Django 很陌生)。我摆脱了与自定义 User 类的 ForeignKey 关系,并添加了 ForeignKey 关系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 

谁能给我任何关于这个错误的解释,以及为什么我现在使用的是内置的用户而不是我自己的类?

4

1 回答 1

3

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

IntegrityErrors意味着如果您执行查询,将违反数据库中的某些约束。我确信更新数据库模式python manage.py syncdb可​​以解决问题。

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

希望这可以帮助!

于 2013-06-24T15:31:20.563 回答