[英]Django: Saving instance only if it does not exist already
如果地址不存在,我只想保存一個 Location 實例。
目前,當您嘗試使用已經存在的地址進行保存時,您會收到錯誤的請求。
如何覆蓋保存 function 來實現這一點? 這是正確的方法嗎?
當前 model:
class Location(models.Model):
latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True)
longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True)
address = models.CharField(max_length=150, unique=True)
field_quality = models.DecimalField(
max_digits=3, decimal_places=1, null=True,)
field_availability = models.DecimalField(
max_digits=3, decimal_places=1, null=True,)
place_id = models.CharField(max_length=200, null=True)
def save(self, *args, **kwargs):
if self.objects.filter(address=[self.address]).exists():
pass
else:
super().save(*args, **kwargs)
您已經在 model 中使用了unique=True
。 它將確保您在該表中沒有重復地址。 現在,關於錯誤請求,我認為這是一個正確的實現,重復的地址應該得到 400 個錯誤請求。 現在,如果您仍然想為重復地址提供 200,那么最好通過使用 try catch 捕獲異常來處理視圖中的IntegrityError
錯誤。 像這樣:
from django.db import IntegrityError
try:
Location.objects.create(...)
except IntegrityError:
# handle error
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.