Python 向django中的模型表单添加其他字段

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

我有一个类似的问题,但这里列出的解决方案对我不起作用

视图。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, **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中的选项