sql >> Databáze >  >> RDS >> PostgreSQL

Podmíněná aktualizace_nebo_vytvoření pomocí django

Následující příklady mohou fungovat správně

1. možnost

try:
    obj = Room.objects.get(
        id=id, # test with other fields if you want
    )
    if obj.modified_at < DATETIME:
        obj.capacity = 10
        obj.save()
    else:
        obj = Room.objects.create(
            # fields attributes
        )
except Room.DoesNotExist:
    obj = Room.objects.create(
        # fields attributes
    )

2. možnost

nebo to můžete udělat pomocí Podmíněný výraz django

from django.db.models import F, Case, When
import datetime

your_date = datetime.datetime.now()
condition = Case(When(modified_at__lt=your_date,then=10),default=F('capacity'))
  • Zkontrolujeme, zda modified_at je menší než your_date
  • pak hodnota této podmínky je 10,
  • jinak zachováme stejnou hodnotu pole s F('capacity')

zbytek kódu

Room.objects.update_or_create(name='new_name',
           defaults={'name':'new_name','capacity':conditition})



  1. Kreslení více polygonů na Google Maps API v3 z databáze MySQL

  2. ...mysql2/mysql2.so:[BUG] Chyba segmentace ruby ​​2.0.0p247

  3. Oracle Převeďte TIMESTAMP s časovým pásmem na DATE

  4. Aktualizace více řádků s různými hodnotami