Calling function when model is called by django-admin -


मेरे पास मेरे मॉडल में ऐसा कुछ है:

  वर्ग Artykul (models.Model) : Id = models.AutoField (max_length = 5, primary_key = true) tytul = models.CharField (max_length = 255) kategoria = models.ManyToManyField (शीर्षक, limit_choices_to = options_limit) dodano = models.DateField (auto_now_add = true) autor = मॉडल .CharField (max_length = 255) glowny_obrazek = models.ImageField (खाली = सच, upload_to = "uploads / artykul_main_img") tresc = प्लेसहोल्डरफिल्ड ('tresc') def show_categories (स्वयं): वापसी ',' .join (self.kategoria। Values_list ('title', flat = true)) def ready_choices_limit (स्व): वापसी {'page__level__exact': 1} def __unicode __ (स्वयं): रिटर्न स्व .tytul  

जैसा कि आप देख सकते हैं मेरे कई टॉम मैनीफिल्ड में मेरे पास कई विकल्प हैं मैं इसे गतिशील बनाने के लिए कुछ उपयोगकर्ताओं को उनकी अनुमतियों के आधार पर अलग-अलग विकल्प चुनने की अनुमति देता हूं। मैं इसे तैयार कर सकता हूँ functions_choices_limit () प्रश्न यह है कि यदि यह संपूर्ण विचार अच्छा है और यदि नहीं, तो यह असर कैसे भिन्न हो सकता है? या अगर यह अच्छा है तो मैं इस फ़ंक्शन को प्रत्येक बार जब उपयोगकर्ता व्यवस्थापक पैनल में लॉगिंग कर सकता हूं। मैं इसे हर बार मॉडल कहा जाता है, क्योंकि मैं साइट के सामान्य उपयोगकर्ताओं के लिए अनुमति की जांच करने की आवश्यकता नहीं है, सिर्फ प्रशासकों के लिए बुलाया नहीं करना चाहते।

पहले से धन्यवाद Michał

  वर्ग Artykuladmin (models.ModelAdmin): def formfield_for_manytomany (स्वयं, db_field, अनुरोध = कोई नहीं, ** kwargs): formfield = सुपर (आर्टिकुल एडमिन, स्वयं) .formfield_for_foreignkey (db_field, अनुरोध, ** kwargs) अगर request.user.is_superuser: रिटर्न फॉर्मफ़ील्ड अगर db_field.name == "category": # यहाँ आपके मापदंड को निर्दिष्ट करें: qs = Title.objects.filter ( Page__level__exact = 1) kwargs ["queryset"] = qs रिटर्न db_field.formfield (** kwargs)  

Comments