0

我想知道在为 ModelChoiceField 创建查询集时如何访问用户的个人资料。我希望能够使用 ModelChoiceField 根据保存在用户配置文件中的参数来显示另一个表中的联系人,即

who = forms.ModelChoiceField(queryset=Contacts.objects.filter(id__exact=request.user.get_profile().main_company))

有没有更好的方法来做到这一点(除了模板中的 ajax 选择器)?

格雷格

4

1 回答 1

2

对于那些感兴趣的人,我能够从以下 SO 讨论中提出解决方案:

如何在表单的 clean() 方法中访问请求对象或任何其他变量?

Django:从 ModelAdmin 中访问模型实例?

class InspectionRequestForm(ModelForm):
    ....
    def __init__(self, *args, **kwargs):
            self.request = kwargs.pop('request', None)
            super(InspectionRequestForm, self).__init__(*args, **kwargs)
            companyid = self.request.user.get_profile().main_contactnum.clientid.idflcustomernum
            self.fields['who'].queryset = Contacts.objects.filter(clientid__exact=companyid)

我的观点:

保存表单(此处不需要包含 request=request,但以防万一)

form = InspectionRequestForm(request.POST, request=request)

或空表格

form = InspectionRequestForm(request=request)

感谢 Daniel Roseman 之前的两个答案。

https://stackoverflow.com/users/104349/daniel-roseman

于 2011-06-14T16:36:01.530 回答