2009-11-30 21 views
19

के लिए कस्टम क्वेरीसमूह साथ Django ModelForm उदाहरण मैं एक मॉडल का अनुसरण के विपरीत नहीं है।एक विशेष क्षेत्र

अब मैं Bike के लिए एक ModelForm का निर्माण करना चाहते हैं, लेकिन मैं made_at सूची ही कारखानों, जिस पर वर्तमान उपयोगकर्ता काम करता है से मिलकर करना चाहते हैं। विचार यह है कि उपयोगकर्ताओं को बाइक जोड़ने में सक्षम होना चाहिए जो उन्होंने इकट्ठा किया है और बाइक बनाने के कारखानों में से कौन सा कारखाना दर्ज किया गया है।

मैं यह कैसे कर सकता हूं?

+0

और, इसके लायक होने के लिए, आपका प्रश्न अधिक पठनीय है और जिस बिंदु पर मैंने एक डुप्ली के रूप में इंगित किया है, उस बिंदु से ... – cethegeek

+0

@celopes: क्या आपके पास कोई स्रोत है? –

+0

नहीं ... मैंने उस टिप्पणी को भी हटा दिया जहां मैंने कहा था कि यह बहिष्कृत होने वाला था। किसी कारण से मुझे मेरा दिमाग था कि यह था। मुझे लगता है कि मैंने इसके बारे में टिकट पढ़ा है ... लेकिन दस्तावेज़ों में यह है, और स्रोत में बहिष्कार का कोई संकेत नहीं है। बस मुझे अनदेखा करें। :-) और यह 'auto_now_add' btw है। – cethegeek

उत्तर

5

आप सवाल dupe of this हो सकता है।

S. Lottanswer आपकी समस्या का समाधान करने के लिए टिकट है। उसने जवाब दिया:

ForeignKey django.forms.ModelChoiceField है, जो एक ChoiceField जिसका विकल्प एक मॉडल क्वेरीसमूह हैं का प्रतिनिधित्व करती है। ModelChoiceField के संदर्भ देखें।

तो, फ़ील्ड की क्वेरीसेट विशेषता में एक क्वेरीसेट प्रदान करें। इस पर निर्भर करता है कि आपका फॉर्म कैसे बनाया गया है। यदि आप एक स्पष्ट रूप बनाते हैं, तो आपके पास सीधे नाम वाले फ़ील्ड होंगे।

form.rate.queryset = Rate.objects.filter(company_id=the_company.id) आप डिफ़ॉल्ट ModelForm वस्तु लेते हैं, form.fields["rate"].queryset = ...

यह दृश्य में स्पष्ट रूप से किया जाता है। चारों ओर कोई हैकिंग नहीं।

35

ध्यान में रखते हुए कुछ इस तरह की कोशिश

form = BikeForm() 
form.fields["made_at"].queryset = Factory.objects.filter(user__factory) 

फैक्टरी क्वेरीसमूह को बदलें ताकि यह कारखाना जो उपयोगकर्ता पर काम करता है को पहचानती है।

संबंधित मुद्दे