PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Условно update_or_create с django

Следните примери може да работят правилно

Първа опция

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
    )

Втора опция

или можете да го направите с условен израз на 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'))
  • Проверяваме дали modified_at е по-малко от your_date
  • тогава стойността на това условие е 10,
  • в противен случай запазваме същата стойност на полето с F('capacity')

останалата част от кода

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. Има ли начин за зареждане на текстови данни в база данни в PostgreSQL?

  2. Sequelize hasMany, belongsTo или и двете?

  3. Как да изброим всички активирани роли за всички потребители в PostgreSQL?

  4. Как да промените потребител на суперпотребител в PostgreSQL

  5. PostgreSQL конвенции за именуване