विशेष मामले मैं इस तरह है: from
, to
और amount
(दोनों auth.User
मॉडल के लिए ForeignKey
रों हैं):django के मॉडलफॉर्म उदाहरण के लिए प्रारंभिक पैरामीटर कैसे पास करें?
मैं एक लेन-देन मॉडल, क्षेत्रों के साथ की है। मेरे रूप में, मैं उपयोगकर्ता 2 फ़ील्ड भरने के लिए प्रस्तुत करना चाहता हूं: amount
और from
(to
स्वचालित रूप से दृश्य फ़ंक्शन में वर्तमान उपयोगकर्ता पर सेट हो जाएगा)।
ForeignKey
प्रस्तुत करने के लिए डिफ़ॉल्ट विजेट एक चयन बॉक्स है। लेकिन मैं वहां क्या प्राप्त करना चाहता हूं, केवल user.peers
क्वेरीसेट सदस्यों को विकल्पों को सीमित कर देता है (इसलिए लोग केवल अपने साथियों के साथ लेनदेन पंजीकृत कर सकते हैं और सभी सिस्टम उपयोगकर्ताओं के साथ बाढ़ नहीं कर सकते हैं)।
मैं कुछ इस तरह के ModelForm बदलने की कोशिश की:
class AddTransaction(forms.ModelForm):
from = ModelChoiceField(user.peers)
amount = forms.CharField(label = 'How much?')
class Meta:
model = models.Transaction
लेकिन ऐसा लगता है मैं यहीं ModelChoiceField
के लिए विकल्पों की क्वेरीसमूह पारित करने के लिए है - जहाँ मैं वेब request.user
के लिए एक पहुँच नहीं है वस्तु।
मैं उपयोगकर्ता-निर्भर लोगों को किसी फ़ॉर्म में विकल्पों को कैसे सीमित कर सकता हूं?
बहुत बहुत धन्यवाद! यह वास्तव में मदद की। – kender
फॉर्म क्लास के अंदर से आप 'self.instance' के माध्यम से मॉडल इंस्टेंस का उपयोग कर सकते हैं। याद रखें कि नया ऑब्जेक्ट जोड़ने/बनाने के दौरान इंस्टेंस रिक्त होगा। – JCotton
थोड़ा सा सरल आपके __init __() में नियमित तर्क के रूप में सिस्टमिंग को पकड़ रहा है, जबकि ** kwargs को सीधे पास कर रहा है: 'def __init __ (स्वयं, systemid, * args, ** kwargs): सुपर (बैकअपफॉर्म, स्वयं) .__ init __ (* तर्क, ** kwargs) ' – JCotton