PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Warunkowa aktualizacja_or_create za pomocą django

Poniższe przykłady mogą działać poprawnie

Pierwsza opcja

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
    )

Druga opcja

lub możesz to zrobić za pomocą Wyrażenia warunkowego 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'))
  • Sprawdzamy, czy modified_at jest mniej niż your_date
  • wtedy wartość tego warunku wynosi 10,
  • w przeciwnym razie zachowujemy tę samą wartość pola za pomocą F('capacity')

reszta kodu

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. znajdowanie zapytania MAX(db_timestamp)

  2. Jak ustawić wartość limitu czasu połączenia dla pgAdmin?

  3. Python psycopg2 cursor.fetchall() zwraca pustą listę, ale cursor.rowcount jest> 1

  4. Znajdź identyfikator rodzica, gdy wszystkie dzieci mają tę samą wartość

  5. Jak uzyskać dane lokalne w bazie danych tylko do odczytu przy użyciu programu dplyr?