我想用当前用户过滤 ModelChoiceField 。我找到了一个非常接近我想做的解决方案,但我不明白Django:如何在管理表单中获取当前用户 https://stackoverflow.com/questions/2864955/django-how-to-get-current-user-in-admin-forms
接受的答案说
“我现在可以通过访问 self.current_user 来访问 forms.ModelForm 中的当前用户”
--admin.py
class Customer(BaseAdmin):
form = CustomerForm
def get_form(self, request,obj=None,**kwargs):
form = super(Customer, self).get_form(request, **kwargs)
form.current_user = request.user
return form
--forms.py
class CustomerForm(forms.ModelForm):
default_tax = forms.ModelChoiceField(queryset=fa_tax_rates.objects.filter(tenant=????))
class Meta:
model = fa_customers
如何获取 modelchoice queryset 上的当前用户(tenant=????)
如何在 modelform(forms.py) 中调用 self.current_user
覆盖__init__
的构造函数CustomerForm
:
class CustomerForm(forms.ModelForm):
...
def __init__(self, *args, **kwargs):
super(CustomerForm, self).__init__(*args, **kwargs)
self.fields['default_tax'].queryset =
fa_tax_rates.objects.filter(tenant=self.current_user))
表单字段定义中的查询集可以安全地设置为all()
or none()
:
class CustomerForm(forms.ModelForm):
default_tax = forms.ModelChoiceField(queryset=fa_tax_rates.objects.none())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)