首页 Python python – Django – get_or_create无效

python – Django – get_or_create无效

你能帮我理解为什么这段代码会导致重复输入(IntegrityError)吗? 我在使用Django 1.2. (row, is_new) = MyModel.objects.get_or_create(field1=1)row.other_field = 2row.save() 我对field1有一个独特的约束.如果有一行field1 = 1,一切正常,Django做了“get”

你能帮我理解为什么这段代码会导致重复输入(IntegrityError)吗?

我在使用Django 1.2.

(row,is_new) = MyModel.objects.get_or_create(field1=1)
row.other_field = 2
row.save()

我对field1有一个独特的约束.如果有一行field1 = 1,一切正常,Django做了“get”.

如果没有field1 = 1的行,看起来Django正在创建该行,这是正常的.但为什么不让它保存呢?

更新:

如果有帮助,这里是MyModel:

class MyModel(models.Model):
    id = models.BigIntegerField(primary_key=True)
    field1 = models.BigIntegerField(unique=True)
    other_field = models.CharField(max_length=765)
    class Meta:
        db_table = u'project_crosses_suppl_FO'

field1是另一个表的外键.但我没有在Django中为该表创建模型,所以我不告诉Django它是一个外键.

解决方法

假设这是一个合理忠实的代表你的真实代码,毫不奇怪它不是Django被破坏,这是你的模型.

您已使用自己的id字段覆盖自动主键字段,但忽略了使其成为自动增量.因此数据库没有为PK使用新值,因此存在完整性错误.

除非你有充分的理由,否则你应该让Django处理PK领域本身.

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/python/20210123/16706.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部