在我的Django管理控制台中,每当我想在表中添加一些记录时,都会出现此错误:
/ admin / pool / orders / add /
中的IntegrityError(1452,“无法添加或更新子行:外键约束失败(
projectname
。orders
,约束orders_ibfk_3
,外键(user_phone
)参考{ {1}}(users
)删除时不执行任何操作,但更新时不执行)')
这是我的模特:
phone
其他: 与此同时,我还有另一个问题。我的订单表中有150条记录,但是在Django管理面板中看不到它们,而是显示了计数。
答案 0 :(得分:1)
您的错误可能是由于STORAGE_ENGIENE中的不匹配引起的。我认为有一些INNODB表和一些MyISAM表。尝试将它们转换为一致的类型。
如果这不是错误,则可能是由于数据库中的前向引用引起的。如果这是原因,那么您可以通过将Django设置编辑为以下方式来关闭外键检查:
DATABASES = {
'default': {
...
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
},
}
}
有关更多详细信息,您可以参考这篇文章:Django "Cannot add or update a child row: a foreign key constraint fails"
编辑:
要在phone
字段中获取user_phone
的值,您需要在ForeignKey.to_field
模型中将Orders
使用为:
user_phone = models.ForeignKey('Users', to_field='phone')
这是必需的,因为Django使用User
模型的主键将值存储在user_phone
模型的Orders
中。使用上述脚本有助于在外键字段中获取所需字段的值。
在执行此操作时,您需要确保已设置用户模型的phone
字段。{p1
查看此链接以获取官方Django文档to_field