Django管理面板无法将任何记录添加到表中

时间:2019-03-13 09:43:44

标签: python mysql sql django django-admin

在我的Django管理控制台中,每当我想在表中添加一些记录时,都会出现此错误:

  

/ admin / pool / orders / add /

中的IntegrityError      

(1452,“无法添加或更新子行:外键约束失败(projectnameorders,约束orders_ibfk_3,外键(user_phone)参考{ {1}}(users)删除时不执行任何操作,但更新时不执行)')

这是我的模特:

phone

其他: 与此同时,我还有另一个问题。我的订单表中有150条记录,但是在Django管理面板中看不到它们,而是显示了计数。

1 个答案:

答案 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