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

Django mô phỏng hành vi kích hoạt cơ sở dữ liệu khi chèn / cập nhật / xóa hàng loạt

Đầu tiên, thay vì ghi đè lưu để thêm __before__after , bạn có thể sử dụng pre_save tích hợp sẵn , post_save, pre_delete,post_delete các tín hiệu. https://docs.djangoproject.com/en/1.4/topics/signals/

from django.db.models.signals import post_save

class YourModel(models.Model):
    pass

def after_save_your_model(sender, instance, **kwargs):
     pass

# register the signal
post_save.connect(after_save_your_model, sender=YourModel, dispatch_uid=__file__)

pre_deletepost_delete sẽ được kích hoạt khi bạn gọi delete() trên một bộ truy vấn.

Tuy nhiên, để cập nhật hàng loạt, bạn sẽ phải tự gọi hàm mà bạn muốn tự kích hoạt. Và bạn cũng có thể ném tất cả vào một giao dịch.

Để gọi hàm kích hoạt thích hợp nếu bạn đang sử dụng mô hình động, bạn có thể kiểm tra ContentType của mô hình. Ví dụ:

from django.contrib.contenttypes.models import ContentType

def view(request, app, model_name, method):
    ...
    model = get_model(app, model_name)
    content_type = ContentType.objects.get_for_model(model)
    if content_type == ContenType.objects.get_for_model(YourModel):
        after_save_your_model(model)
    elif content_type == Contentype.objects.get_for_model(AnotherModel):
        another_trigger_function(model)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:cấp quyền truy cập cho một vai trò / người dùng cho các bảng trong tương lai được tạo bởi một vai trò / người dùng khác

  2. Cách lấy danh sách tham số hàm (để tôi có thể bỏ một hàm)

  3. Chữ "O" trong ORDBMS:Kế thừa PostgreSQL

  4. Thêm tuần vào một ngày trong PostgreSQL

  5. khách hàng psql có thể là một bàn cờ bây giờ…