Đối với một giải pháp cũng hoạt động ngay cả khi bạn có UUIDField
khóa chính (như những người khác đã lưu ý không phải là None
nếu bạn chỉ ghi đè save
), bạn có thể cắm vào tín hiệu post_save của Django . Thêm này để bạn models.py :
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=MyModel)
def mymodel_saved(sender, instance, created, **kwargs):
if created:
# do extra work on your instance, e.g.
# instance.generate_avatar()
# instance.send_email_notification()
pass
Cuộc gọi lại này sẽ chặn save
phương thức, vì vậy bạn có thể thực hiện những việc như thông báo kích hoạt hoặc cập nhật mô hình thêm trước khi phản hồi của bạn được gửi lại qua dây, cho dù bạn đang sử dụng biểu mẫu hoặc khung Django REST cho các cuộc gọi AJAX. Tất nhiên, sử dụng có trách nhiệm và giảm tải các tác vụ nặng cho hàng đợi công việc thay vì khiến người dùng của bạn chờ đợi :)
UUIDField pk