我的一個視圖的任務是將多個值插入到我的數據庫中。我的印象是,如果我建立我的模型具有獨特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
所以是的,它應該不會重複。你有沒有應用遷移? –