मैं उपयोगकर्ता समूहों में प्रदान किए गए django समूहों का उपयोग करना चाहता हूं। django समूह अनुमतियाँ व्यवस्थापक पैनल में सेट हैं। मान लीजिए मैंने दो समूह शिक्षक और छात्र बनाए। मैं सामान्य दृश्य स्तर पर अनुमतियाँ सेट करना चाहता हूँ। कुछ दृश्य केवल छात्र या शिक्षक द्वारा देखे या संपादित किए जा सकते हैं। ये अनुमति django व्यवस्थापक में निम्नलिखित के रूप में सेट की गई थी: यहां छवि विवरण दर्ज करें

अब मैंने निम्नलिखित के रूप में एक क्रिएटव्यू बनाया है:

class CreateQuestionView(LoginRequiredMixin,generic.CreateView):
	model =   Question
	success_url= reverse_lazy('questions:list')
	fields = ['title','description' ]
	def form_valid(self,form):
		form.instance.user = self.request.user
		#self.object.save()
		return super().form_valid(form)

अब मैं चाहता हूं कि यह दृश्य केवल शिक्षक समूहों द्वारा ही उपलब्ध हो। मुझे समूह अनुमति को लागू करने का कोई उचित तरीका नहीं मिल रहा है। इस मामले में @group_required जैसा कुछ काम कर सकता है link< /a> लेकिन कोई संबंधित दस्तावेज नहीं मिल रहा है। इसे लागू करने का सही तरीका क्या है?

0
Akhil Sahu 6 अप्रैल 2020, 12:43

1 उत्तर

सबसे बढ़िया उत्तर

आप The PermissionRequiredMixin चाहते हैं:

class CreateQuestionView(LoginRequiredMixin, PermissionRequiredMixin, generic.CreateView):
    permission = "yourapp.perm_code_name"
    model =   Question
    success_url= reverse_lazy('questions:list')
    fields = ['title','description' ]
    def form_valid(self,form):
        form.instance.user = self.request.user
        #self.object.save()
        return super().form_valid(form)

ध्यान दें कि आप नहीं यह जांचना चाहते हैं कि आपका उपयोगकर्ता किसी दिए गए समूह से संबंधित है या नहीं (यह मानते हुए कि इस समूह के पास विशिष्ट परमिट हैं) - यह एक एंटीपैटर्न है। आप केवल इस बात की परवाह करते हैं कि क्या आपके उपयोगकर्ता के पास आवश्यक परमिट है, हालाँकि उसके पास है।

1
bruno desthuilliers 6 अप्रैल 2020, 11:00