あなたが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()
ご覧のとおり、どこでも変数ret
を使用していなかったので、forループを削除しました。したがって、ovを繰り返し処理する必要はありませんすべてのReturnオブジェクト。上記はあなたが持っていたものと機能的に同等です。 :)
OR:
は、あなたは、あなたのリターンモデルにこれを割り当てます
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
あなたのmodels.py内create_or_updateメソッドを使用して独自のマネージャを書くことができ
class Return(model.Models):
# your object fields here
objects = ReturnManager()
こんにちはNeelik、両方の答えに感謝します。私は最初の答えにいくつかの変更を提案し、それを正しいものとしてマークします – Juanvulcano
あなたは何を変更したいですか? – Neelik