Django:get_or_create使用together_unique引发重复条目

lla*_*aro 28 python django django-models

模型示例

class Example(Stat):
    numeric = models.IntegerField(...) 
    date = models.DateField( auto_now_add=True,...) #auto_now_add=True was the problem

    class Meta:
       unique_together = ('numeric','date')
Run Code Online (Sandbox Code Playgroud)

)

如果已经存储了72和'2011-08-07'

Example.object.get_or_create(numeric=72,date='2011-08-07')
Run Code Online (Sandbox Code Playgroud)

加薪

django.db.utils.IntegrityError: (1062, "Duplicate entry '72-2011-08-07'
Run Code Online (Sandbox Code Playgroud)

问题是为什么get_or_create提出这IntegrityError就是使用的想法 get_or_create.

不确定这是不是一个bug,我打开了一张票https://code.djangoproject.com/ticket/16587

agf*_*agf 20

看来你的问题是有更多列你没有包括在你的get_or_create,请参阅Django邮件列表中的这个帖子.

您需要使用文档中描述的defaults参数,或指定所有列的值,以便正确匹配.get_or_createget_or_create

  • 我解决了阅读你的答案的问题.DateField使用auto_now_add = True,所以我在我的问题中避免了一些重要信息.要解决auto_now_add = False现在正在工作 (2认同)
  • 我正在设置默认值,但仍然收到此完整性错误:/ (2认同)