使用 user.get_profile() 自定义 Django ModelChoiceField 查询

发布于 2024-11-15 09:53:45 字数 299 浏览 2 评论 0原文

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

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

是否有更好的方法来执行此操作(除了 ajax 选择器之外) 模板)?

格雷格

I am wondering how to access a user's profile when creating the
queryset for a ModelChoiceField. I would like to be able to use the
ModelChoiceField to display contacts from another table based on a
parameter saved in the user profile i.e.

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

Is there a better way to do this (beyond an ajax picker in the
template)?

Greg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一城柳絮吹成雪 2024-11-22 09:53:45

对于那些感兴趣的人,我能够从以下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

For Those interested I was able to come up with a solution from the following SO discussions:

How do I access the request object or any other variable in a form's clean() method?

Django: accessing the model instance from within 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)

My View:

Save Form (Not as necessary to include request=request here, but just in case)

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

Or Empty Form

form = InspectionRequestForm(request=request)

Thanks to Daniel Roseman for both of the previous answers.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文