कृपया इसे एक प्रश्न के रूप में देखें। शायद कोई नीचे समाधानों में से एक का उपयोग करेगा।डीजेंगो उपयोगकर्ता छिपी हुई इनपुट बनाम कक्षा आधारित दृश्यों के साथ सीधे विचारों में बचत
मेरे पास कुछ मॉडल हैं जिनमें ForeignKey(User)
फ़ील्ड है। मेरी कक्षा-आधारित दृश्य दृश्य जेनेरिक CreateView
से प्राप्त किए गए हैं।
वहाँ जब एक नई वस्तु को जोड़ने जुड़े उपयोगकर्ता को बचाने के लिए दो विकल्प हैं:
सहेजा जा रहा है
form_valid
विधि अधिभावी द्वारा विचारों में रूप; इसuser_id
बेनकाब नहीं करता है (और अन्य यहाँ कि उजागर नहीं किया जाना चाहिए डेटा का उल्लेख नहीं)class CreateOfferView(CreateView): model = Offer form_class = SomeModelFormWithUserFieldExcluded def form_valid(self, form): instance = form.save(commit=False) instance.user = self.request.user instance.save()
सहेजा जा रहा है एक छिपी हुई फ़ील्ड में उपयोगकर्ता आईडी संग्रहीत (और उजागर) के साथ प्रपत्र। यहां मुश्किल हिस्सा है। उपयोगकर्ता फ़ील्ड के साथ और अधिक मॉडल हैं ... इसलिए कोई फ़ॉर्म बनाते समय मुझे उपयोगकर्ता फ़ील्ड को प्रारंभिक (वर्तमान में लॉग इन) उपयोगकर्ता भरने की आवश्यकता है और मुझे उस फ़ील्ड को छिपाने की भी आवश्यकता है। इस प्रयोजन के लिए मैं का उपयोग किया है मेरी
OwnFormMixin
class OwnFormMixin(object): def get_form(self, form_class): form = super(OwnFormMixin, self).get_form(form_class) form.fields['user'].widget = forms.HiddenInput() def get_initial(self): initial = super(OwnFormMixin, self).get_initial() initial['user'] = self.request.user.pk #I could also do this in get_form() with form.fields['user'].initial class CreateOfferView(OwnFormMixin, CreateView): model = Offer form_class = SomeModelFormWithAllFields
रहे हैं और अधिक CreateXXXView
का उपयोग कर OwnFormMixin
..
कैसे आप रूपों में अपने उपयोगकर्ता डेटा सहेज सकता हूँ?
छिपे बनाम सीधे आपके विचारों में बचत? पेशेवर/विपक्ष क्या हैं?
आप सत्यापन पर request.user का उपयोग क्यों नहीं करते? क्या किसी अन्य उपयोगकर्ता से पोस्ट का जवाब देने की संभावना है? Django उपयोगकर्ता डेटा से किसी भी रूप में किसी भी रूप में या किसी भी दृश्य भाग में किसी भी संपर्क का खुलासा क्यों न करें। यह एक संभावित भेद्यता है ... – garmoncheg