मॉडलफॉर्म के मेरे कार्यान्वयन में, मैं वर्तमान उपयोगकर्ता सुपरसियर के आधार पर विभिन्न प्रकार के सत्यापन जांच करना चाहता हूं। मैं वर्तमान अनुरोध उपयोगकर्ता तक कैसे पहुंच सकता हूं?django: ModelForm में वर्तमान अनुरोध उपयोगकर्ता तक कैसे पहुंचे?
6
A
उत्तर
10
आप उपयोगकर्ता ऑब्जेक्ट को फॉर्म कन्स्ट्रक्टर में अतिरिक्त तर्क के रूप में पास कर सकते हैं।
उदा।
f = MyForm(user=request.user)
और निर्माता तरह दिखेगा:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user',None)
super(MyForm, self).__init__(*args, **kwargs)
और फिर clean_XX रूपों में उपयोगकर्ता का उपयोग के रूप में आप चाहते हैं
7
नोट: यदि आप उपयोग कर रहे हैं कक्षा के आधार दृश्य (CBVs) तो फॉर्म कन्स्ट्रक्टर में एक अतिरिक्त तर्क पारित करना (उदाहरण के लिए get_forms_class
में) या form_class
में काम नहीं करेगा, क्योंकि <form> object is not callable
दिखाया जाएगा।
CBVs के लिए समाधान get_form_kwargs
उपयोग करने के लिए है, जैसे:
views.py:
# Sending user object to the form, to verify which fields to display/remove (depending on group)
def get_form_kwargs(self):
kwargs = super(MyView, self).get_form_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
forms.py:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user') # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
super(MyForm, self).__init__(*args, **kwargs)
# If the user does not belong to a certain group, remove the field
if not self.user.groups.filter(name__iexact='mygroup').exists():
del self.fields['confidential']
संबंधित मुद्दे
- 1. Django ModelForm
- 2. Django ModelForm
- 3. django क्लास-आधारित दृश्य - UpdateView - फ़ॉर्म प्रसंस्करण करते समय अनुरोध उपयोगकर्ता तक कैसे पहुंचे?
- 4. Django ModelForm
- 5. Django ModelForm प्रमाणीकरण
- 6. नियंत्रण Django ModelForm उत्पादन
- 7. Django फॉर्मेट वर्तमान उपयोगकर्ता
- 8. Django व्यवस्थापक में ManyToManyField के दोनों दिशाओं तक कैसे पहुंचे?
- 9. रेल नोटिफिकेशन से current_user तक कैसे पहुंचे?
- 10. Django ModelForm लेबल कैप्टिलाइज़ेशन
- 11. जेएसपी में अनुरोध विशेषताओं पर कैसे पहुंचे?
- 12. PHP में पोस्ट डेटा तक कैसे पहुंचे?
- 13. Django ModelForm स्वच्छ
- 14. Django Imagefield ModelForm
- 15. superclass में घोषित IBOutlets तक कैसे पहुंचे?
- 16. Magento के बाहर Magento उपयोगकर्ता के सत्र तक कैसे पहुंचे?
- 17. लिनक्स कर्नेल से उपयोगकर्ता स्पेस मेमोरी तक कैसे पहुंचे?
- 18. वेक्टर में अंतिम मूल्य तक कैसे पहुंचे?
- 19. नेटवर्क में सी $ शेयर तक कैसे पहुंचे?
- 20. ईपीप्लस में वर्कशीट तक कैसे पहुंचे?
- 21. जेएस में माइक्रोफोन तक कैसे पहुंचे?
- 22. आईई 9 में Event.target तक कैसे पहुंचे?
- 23. कोल्डफ्यूजन में जावा एनम तक कैसे पहुंचे?
- 24. नए Django वर्ग विचारों पर उपयोगकर्ता वर्तमान उपयोगकर्ता
- 25. मैं Django ModelForm में ForeignKey विकल्पों को कैसे फ़िल्टर करूं?
- 26. क्लास-आधारित जेनेरिक विचारों में RequestContext तक कैसे पहुंचे?
- 27. Django modelform अन्य फ़ील्ड विकल्प
- 28. मेरे Django (1.2) प्रोजेक्ट में ModelForm
- 29. टेम्पलेट टैग में वर्तमान उपयोगकर्ता कैसे प्राप्त करें?
- 30. कैसे Django
मूल प्रश्न में यह स्पष्ट नहीं के बारे में क्षमा करें, लेकिन मेरे मॉडलफॉर्म को मॉडलएडमिन सबक्लास तक लगाया गया था। मैं ModelAdmin से ModelForm के कस्टम कन्स्ट्रक्टर को कैसे शुरू कर सकता हूं? – zer0stimulus
तो आप django व्यवस्थापक इंटरफ़ेस के भीतर ऐसा करना चाहते हैं? कोशिश नहीं की है, लेकिन मुझे लगता है कि आप फॉर्म की __call__ विधि को ओवरराइट करने का प्रयास कर सकते हैं। उदाहरण के लिए कुछ: http://stackoverflow.com/questions/727928/django-admin-how-to-access-the-request-object-in-admin-py-for-list-display-meth –