python - Django - Limit users who view the items -
मेरे मॉडल:
वर्ग PromoNotification (models.Model): title = models.CharField (_ ('शीर्षक'), अधिकतम_लांबी = 200) सामग्री = मॉडल। टेस्टफिल्ड (_ ('सामग्री')) उपयोगकर्ता = मॉडल। कई मेटाफ़ाइल (उपयोगकर्ता, रिक्त = सत्य, शून्य = सत्य) समूह = मॉडल.घटक, रिक्त = सच, शून्य = सच)
मैं उन वस्तुओं को कुछ अनुमतियों के साथ टेम्पलेट में प्रकाशित करना चाहता हूं। टेम्पलेट उन उपयोगकर्ताओं के लिए सूचनाएं दिखाता है जो सूची में हैं (उपयोगकर्ता या / और समूह)। मुझे क्या करना चाहिए? हर प्रकार की सहायता के लिए आपका धन्यवाद। यदि आप कर सकते हैं तो मुझे कुछ कोड दिखाएं।
आप एक कस्टम प्रबंधक का उपयोग कर सकते हैं, जिससे यह आसान हो जाता है यह उपयोगकर्ता कई दृश्यों में फ़िल्टरिंग करता है।
वर्ग PromoNotificationManager (models.Manager): def get_for_user (स्वयं, उपयोगकर्ता) "" "निर्दिष्ट उपयोगकर्ता के लिए दृश्यमान सूचनाएं पुनर्प्राप्त करें" Untested, लेकिन जो आपको सूचनाएं = सुपर (प्रोमो नॉटिफिकेशन प्रबंधक, स्वयं) की आवश्यकता है उसके करीब होना चाहिए। गेट_क्वेरी_सेट () user_filter = Q (groups__in = user.groups.all ()) group_filter = Q (users__in = user.groups.all ()) रिटर्न नोटिफिकेशन .फिल्टर (यूजर_फिलटर | ग्रुप_फेल्टर)
अपने प्रोमो नोटिफिकेशन मॉडल में प्रबंधक को हुक करें:
वर्ग प्रोमोनेटिकेशन (मॉडल.मॉडेल): ... Objects = PromoNotificationManager ()
फिर आपके विचार में:
def some_view (स्वयं): user_notifications = PromoNotification.objects.get_for_user (पुनः Quest.user)
आप डॉक्स में कस्टम मैनेजरों के बारे में अधिक पढ़ सकते हैं:
Comments
Post a Comment