สำหรับวิธีการแก้ปัญหาที่ใช้งานได้แม้ในขณะที่คุณมีUUIDField
คีย์หลัก (ซึ่งคนอื่น ๆ ระบุไว้ไม่ใช่None
ว่าคุณเพิ่งจะแทนที่save
) คุณสามารถเสียบสัญญาณpost_saveของ Django ได้ เพิ่มสิ่งนี้ไปยัง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
การเรียกกลับนี้จะบล็อกsave
วิธีการเพื่อให้คุณสามารถทำสิ่งต่าง ๆ เช่นการแจ้งเตือนทริกเกอร์หรืออัปเดตโมเดลเพิ่มเติมก่อนที่คำตอบของคุณจะถูกส่งกลับไปที่สายไม่ว่าคุณจะใช้แบบฟอร์มหรือกรอบ Django REST สำหรับการโทร AJAX แน่นอนใช้ความรับผิดชอบและลดภาระงานหนักให้กับคิวงานแทนที่จะทำให้ผู้ใช้ของคุณรอ :)
UUIDField pk