PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có điều kiện update_or_create với django

Các ví dụ sau có thể hoạt động bình thường

Tùy chọn đầu tiên

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
    )

Tùy chọn thứ 2

hoặc bạn có thể làm như vậy với Biểu thức có điều kiện của 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'))
  • Chúng tôi kiểm tra xem modified_at nhỏ hơn your_date
  • thì giá trị của điều kiện này là 10,
  • nếu không, chúng tôi giữ nguyên giá trị của trường với F('capacity')

phần còn lại của mã

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. Cách triển khai Chọn để cập nhật trong EF Core

  2. Tìm các bài báo trong đó mảng

  3. Thiết lập đường hầm SSH với Paramiko để truy cập PostgreSQL

  4. Kết nối db psycopg2 bị treo khi mất kết nối mạng

  5. Người dùng postgres tạo cơ sở dữ liệu