Python 向django中的模型表单添加其他字段
我有一个类似的问题,但这里列出的解决方案对我不起作用 视图。py:Python 向django中的模型表单添加其他字段,python,django,django-forms,Python,Django,Django Forms,我有一个类似的问题,但这里列出的解决方案对我不起作用 视图。py: @login_required def contract(request): form = ContractorForm() return render(request,'portal/main_form.html',{'form': form }) forms.py class ContractorForm (forms.ModelForm): def _init_(self, *args, **kw
@login_required
def contract(request):
form = ContractorForm()
return render(request,'portal/main_form.html',{'form': form })
forms.py
class ContractorForm (forms.ModelForm):
def _init_(self, *args, **kwargs):
super(ContractorForm, self).__init__(*args, **kwargs)
self.fields['phone'].choices= [('123',1235),('256',1256),]
phone= forms.ChoiceField(choices=())
class Meta:
model = Contractor
fields = ['name','phone']
def con_phone(self, user):
return Phone.objects.filter(contractor__user = user)
我遇到的问题是,phone字段在select上没有任何选项,如果我反过来稍微更改forms.py(如下所示),它会按预期工作
class ContractorForm (forms.ModelForm):
phone= forms.ChoiceField(choices=[('123',1235),('256',1256),])
class Meta:
model = Contractor
fields = ['name','phone']
def _init_(self, *args, **kwargs):
super(ContractorForm, self).__init__(*args, **kwargs)
def con_phone(self, user):
return Phone.objects.filter(contractor__user = user)
我的问题是,我打算将用户作为参数传递给构造函数,然后获取他的电话号码,并将其作为选项添加到表单中,因此我[至少认为我不能]使用有效的声明性代码
我很确定我在做一些愚蠢的事情(我对django还比较陌生),非常感谢你们能给我的任何帮助在视图中,您可以指定表单的
电话
字段的查询集
假设您的承包商
模型有一个名为电话
的字段,并假设它是从承包商
到电话
的一对多字段,即在电话
中
contractor=model.ForeignKey(承包商,相关的\u name='phones')
您可以将表单中的phone
字段更改为modelcooicefield
,并在视图中执行类似操作
u = request.user
form.fields['phone'].queryset = u.phones.all()
谢谢,我知道我可以在视图中进行过滤,并将其传递给承包商构造函数,然后从那里将其传递给字段/属性。我的问题是,即使我硬编码值并将它们分配给构造函数中字段的choice属性,我仍然无法获得select中的选项