Django "__init__takes At Least 2 Arguments" For Dynamic Drop Down List Function
Regarding the django dynamic drop down list, I made some trials, If no dynamic function, it works without problem from django import forms from django.forms import ModelForm from .
Solution 1:
You must pass queryset to your ModelChoiceField. From docs:
For more complex uses, you can specify
queryset=None
when declaring the form field and then populate the queryset in the form’s__init__()
method:
classinputform(forms.ModelForm):
region = forms.ModelChoiceField(queryset=None, label=u'Region')
def__init__(self,*args,**kwargs):
super(inputform,self).__init__(*args,**kwargs)
self.fields['region'].choices=((x['Region'].que,x['Region'].disr) for x in dupont.objects.values('Region').distinct())
Solution 2:
You can do that in two of the following ways(assuming region is FK with input
model):
First:
classinputform(forms.ModelForm):
regionlist = forms.ModelChoiceField(queryset=None)
defregion_list(self):
# This method returns a list consists of primary keys of Region.return [x['Region'] for x in result.objects.values('Region').distinct()]
def__init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['regionlist'].queryset = Region.objects.filter(id__in=self.region_list())
In region model, add this method to display que
and disr
to display them in choice field.
classRegion(models.Model):
...
def__str__(self):
return'{0}, {1}'.format(self.que, self.disr)
Second:
classinputform(forms.ModelForm):
regionlist = forms.ChoiceField()
defregion_list(self):
# This method returns a list consists of primary keys of Region.return [x['Region'] for x in result.objects.values('Region').distinct()]
def__init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['regionlist'].choices = [(Region.objects.get(id=x).que, User.objects.get(id=x).disr) for x inself.region_list()]
defclean_regionlist(self):
# returns region objectreturn Region.objects.get(pk=self.cleaned_data['regionlist'])
Post a Comment for "Django "__init__takes At Least 2 Arguments" For Dynamic Drop Down List Function"