如果你知道ID,你可以爲它查詢:
在你的問題,你有:
returns = Return.objects.all()
for ret in returns:
return_in_database = Return.objects.filter(ItemId="UUID").exists()
if not return_in_database:
obj, created = Return.objects.get_or_create(ItemID="UUID",
ItemName="Hodaddy", State="Started")
obj.save()
這是可以做到:
if not Return.objects.filter(ItemId="UUID").exists():
obj, created = Return.objects.get_or_create(ItemID="UUID",
ItemName="Hodaddy", State="Started")
obj.save()
正如你所看到的,我已經移除了for循環,因爲你沒有在任何地方使用變量ret
,所以不需要迭代ov呃所有返回對象。以上功能與您的功能相同。 :)
OR:
您可以用create_or_update方法寫你自己的經理你的models.py內
class ReturnManager(models.Manager):
def create_or_update(self, **kwargs):
new_return = Return(**kwargs)
existing = Return.objects.filter(ItemId=new_returns.ItemID).first()
if existing:
new_return.pk = existing.pk
new_return.id = existing.id
new_return.save()
return new_return
你會然後分配給你的迴歸模型
class Return(model.Models):
# your object fields here
objects = ReturnManager()
嗨Neelik,謝謝你的答案。我建議對第一個答案進行一些更改並將其標記爲正確 – Juanvulcano
好的,您希望我做出什麼改變? – Neelik