python-Django get_or_create使用默认值引发键Primary的重复条目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Django get_or_create使用默认值引发键Primary的重复条目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1316字,纯文字阅读大概需要2分钟。
内容图文
![python-Django get_or_create使用默认值引发键Primary的重复条目](/upload/InfoBanner/zyjiaocheng/654/9e8d552c5e3a4bd8937693f866d4d7c3.jpg)
救命!无法解决这个问题!即使使用默认参数集,我在get_or_create上遇到完整性错误.
这是简化后的模型的外观.
class Example(models.Model):model
user = models.ForeignKey(User)
text = models.TextField()
def __unicode__(self):
return "Example"
我在Django中运行:
def create_example_model(user, textJson):
defaults = {text: textJson.get("text", "undefined")}
model, created = models.Example.objects.get_or_create(
user=user,
id=textJson.get("id", None),
defaults=defaults)
if not created:
model.text = textJson.get("text", "undefined")
model.save()
return model
我在get_or_create行上遇到错误:
IntegrityError: (1062, "Duplicate entry '3020' for key 'PRIMARY'")
它是直播的,所以我无法真正分辨出输入是什么.
救命?实际上有一个默认设置,所以这不是他们没有默认值的问题.另外,它没有唯一的在一起. Django : get_or_create Raises duplicate entry with together_unique
我正在使用python 2.6和mysql.
解决方法:
如果无法找到与您传入的参数完全匹配的对象,则get_or_create()将尝试创建一个新对象.
因此,我假设发生的事情是另一个用户创建了一个ID为3020的对象.由于您所请求的user / id组合中没有对象,因此它将尝试使用该组合创建一个新对象,但失败,因为其他用户已经创建了ID为3020的项目.
希望这是有道理的.查看以下内容.可能会对发生的事情有所了解.
models.Example.objects.get(id=3020)
您可能需要在查询中将3020设置为字符串.我假设字符串是从您的textJson.get()方法返回的.
内容总结
以上是互联网集市为您收集整理的python-Django get_or_create使用默认值引发键Primary的重复条目全部内容,希望文章能够帮你解决python-Django get_or_create使用默认值引发键Primary的重复条目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。