मुझे एक फॉर्म बनाने की आवश्यकता है, जिसमें 1 चयन और 1 टेक्स्ट इनपुट है। चयन डेटाबेस से लिया जाना चाहिए। मॉडल इस तरह दिखता है:फील्ड विकल्प() क्वेरीसेट के रूप में?
class Province(models.Model):
name = models.CharField(max_length=30)
slug = models.SlugField(max_length=30)
def __unicode__(self):
return self.name
यह इस के लिए पंक्तियों केवल व्यवस्थापक द्वारा जोड़ रहे हैं, लेकिन सभी उपयोगकर्ताओं रूपों में देख सकते हैं। मैं उस से मॉडलफॉर्म बनाना चाहता हूं। मैंने ऐसा कुछ किया:
class ProvinceForm(ModelForm):
class Meta:
CHOICES = Province.objects.all()
model = Province
fields = ('name',)
widgets = {
'name': Select(choices=CHOICES),
}
लेकिन यह काम नहीं करता है। चयन टैग एचटीएमएल में प्रदर्शित नहीं होता है। मैंने क्या गलत किया?
अद्यतन:
यह समाधान काम करता है के रूप में मैं यह काम करने के लिए wanto:
class ProvinceForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ProvinceForm, self).__init__(*args, **kwargs)
user_provinces = UserProvince.objects.select_related().filter(user__exact=self.instance.id).values_list('province')
self.fields['name'].queryset = Province.objects.exclude(id__in=user_provinces).only('id', 'name')
name = forms.ModelChoiceField(queryset=None, empty_label=None)
class Meta:
model = Province
fields = ('name',)
मैंने अपना पोस्ट कामकाजी समाधान के साथ अपडेट किया है। – robos85
+1: लेकिन यह 'प्रतिबद्ध = गलत' नहीं होना चाहिए, अन्यथा आप डीबी को दो बार –