सबसे पहले, __before
add जोड़ने के लिए सेव को ओवरराइड करने के बजाय और __after
विधियों, आप अंतर्निहित pre_save
. का उपयोग कर सकते हैं , post_save,
pre_delete,
और post_delete
संकेत। 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_delete
और post_delete
जब आप delete()
call पर कॉल करेंगे तो ट्रिगर हो जाएगा एक क्वेरीसेट पर।
हालाँकि, बल्क अपडेट के लिए, आपको उस फ़ंक्शन को मैन्युअल रूप से कॉल करना होगा जिसे आप स्वयं ट्रिगर करना चाहते हैं। और आप यह सब लेन-देन में भी डाल सकते हैं।
यदि आप गतिशील मॉडल का उपयोग कर रहे हैं, तो उचित ट्रिगर फ़ंक्शन को कॉल करने के लिए, आप मॉडल के ContentType का निरीक्षण कर सकते हैं। उदाहरण के लिए:
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)