PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Django बल्क इंसर्ट/अपडेट/डिलीट पर डेटाबेस ट्रिगर व्यवहार का अनुकरण करता है

सबसे पहले, __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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कॉलम को दो टेबल से एक आउटपुट में कैसे मर्ज कर सकता हूं?

  2. ऑपरेटर मौजूद नहीं है:पूर्णांक =? पोस्टग्रेज का उपयोग करते समय

  3. चालाक 2.0 जेनेरिक सीआरयूडी संचालन

  4. कुप्पी:sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError) संबंध उपयोगकर्ता मौजूद नहीं है

  5. क्या JSONB PostgreSQL सरणियों को बेकार बनाता है?