我的一个视图的任务是将多个值插入到我的数据库中。我的印象是,如果我建立我的模型具有独特vendor_name
S:使用Django和Postgresql的重复条目
class Page(models.Model):
vendor_name = models.CharField(max_length=128, unique=True)
website = models.CharField(max_length=128)
food_type = models.CharField(max_length=128)
img_url = models.CharField(max_length=128)
,如果我做的:
for vendor in vendors:
c = Page(vendor_name=vendor["name"],
website=vendor["link"],
food_type=vendor["type"],
img_url=vendor["imageurl"])
c.save()
重复的出现将被跳过,而我就只有一个复制到数据库中。至少这就是我从here了解的内容。而不是这样做,我必须添加一个if语句检查我的数据库中的每个条目,并查看它是否当前在那里,如果它不插入,否则跳过。或者我在这里错过了什么?唯一约束的目的是什么?是否只是在有重复时抛出错误?我可以利用这个呢?
我得到的错误是
Exception Value: duplicate key value violates unique constraint...
根据文档:如果为True,则该字段在整个表格中必须是唯一的。 这是在数据库级别和模型验证实施的。如果您尝试在唯一字段中保存具有重复值的模型,则模型的save()方法将引发django.db.IntegrityError。 –
为什么不使用外键代替,因为似乎有一个Vendor模型 – Pynchia
所以是的,它应该不会重复。你有没有应用迁移? –