मैं Models
में एक Django फार्म वर्ग परिभाषित इस पसंद है:Django ModelChoiceField: एक वस्तु के रूप क्वेरी की स्थापना की और स्थापित करने के लिए डिफ़ॉल्ट मान को छानने
class AccountDetailsForm(forms.Form):
...
adminuser = forms.ModelChoiceField(queryset=User.objects.all())
यह ठीक काम करता है, लेकिन यह कुछ सीमाएं मैं नहीं कर पा रहे है आस-पास काम:
(1) मैं क्वेरीसमूह पर एक फिल्टर, एक चर accountid
प्रपत्र के लिए पारित पर आधारित है, इस तरह उपयोग करना चाहते हैं:
User.objects.filter(account=accountid)
यह मॉडल में काम नहीं कर सकता है क्योंकि accountid
निश्चित रूप से एक चर के रूप में पारित नहीं किया जा सकता है।
यह इस प्रकार है कि queryset
को किसी भी तरह Views
में परिभाषित किया जाना चाहिए, लेकिन जहां तक मैं देख सकता हूं कि यह फॉर्म क्लास में एक आवश्यक फ़ील्ड है।
(2) मैं AccountDetailsForm
डेटाबेस में एक वस्तु है, जो मैं Views
इस तरह में चुन सकते हैं के डिफ़ॉल्ट विकल्प बनाने के लिए करना चाहते हैं:
User.objects.filter(account=accountid).filter(primary_user=1)
मैं एक डिफ़ॉल्ट के रूप में adminuser निर्दिष्ट करने की कोशिश की है के रूप में मूल्य, (जो, अन्य मानक प्रपत्र फ़ील्ड्स के साथ काम करता CharField
की तरह):
adminuser = User.objects.filter(account=accountid).filter(primary_user=1)
...
form = AccountDetailsForm({'adminuser': adminuser})
return render_to_response('accounts/edit/accountdetails.html',
{'form': form, 'account':account})
लेकिन कोई भाग्य।
क्या मुझे यहां लचीलापन देने के लिए ModelChoiceField
के अलावा कुछ और उपयोग करना चाहिए?
धन्यवाद।
हाय में क्षेत्र ओवरराइड कर सकते हैं, आपके उत्तर के लिए धन्यवाद। दृश्य में क्वेरीसेट सेट करना अच्छी तरह से काम किया। जिस भाग को मैं काम नहीं कर सका, वह मॉड्यूल चॉइसफ़ील्ड के _User.objects.filter (account = accountid) के रूप में बाध्य फॉर्म मान (डिफ़ॉल्ट के बजाए) सेट कर रहा है। फिल्टर (primary_user = 1) _। धन्यवाद। – eli