如何获取 forms.py 中的当前签名用户?
How to get current signed user in forms.py?
我在表单中使用 ModelChoiceField select 发票提供商。在当前情况下,我 return 将所有提供程序发送到查询集。
但我应该 return 仅由签名用户创建的提供程序。 Provider 有一个名为 user
.
的 ForeignKey 字段
这是我的表格:
class InvoiceCreationForm(forms.Form):
# ...
provider = forms.ModelChoiceField(
label='Provider',
required=False,
queryset=Provider.objects.all(),
widget=forms.Select(attrs={
'name': 'provider',
'class': 'form-control',
'id': 'input-invoice-provider',
})
)
我需要像这样过滤对象:
Provider.objects.filter(user=current_user)
如何获得签名用户?或者如何在视图之外获取 request
对象?我尝试从表单的 __init__
方法获取当前用户,然后将其设置为 self.user
。但是我不能在 self.user
.
这样的查询中使用它
让用户进入 __init__()
只是解决方案的第一部分。您还需要使用该用户来过滤查询集:
class InvoiceCreationForm(forms.Form):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(InvoiceCreationForm, self).__init__(*args, **kwargs)
if self.user:
self.fields['provider'].queryset = Provider.objects.filter(user=self.user)
我在表单中使用 ModelChoiceField select 发票提供商。在当前情况下,我 return 将所有提供程序发送到查询集。
但我应该 return 仅由签名用户创建的提供程序。 Provider 有一个名为 user
.
这是我的表格:
class InvoiceCreationForm(forms.Form):
# ...
provider = forms.ModelChoiceField(
label='Provider',
required=False,
queryset=Provider.objects.all(),
widget=forms.Select(attrs={
'name': 'provider',
'class': 'form-control',
'id': 'input-invoice-provider',
})
)
我需要像这样过滤对象:
Provider.objects.filter(user=current_user)
如何获得签名用户?或者如何在视图之外获取 request
对象?我尝试从表单的 __init__
方法获取当前用户,然后将其设置为 self.user
。但是我不能在 self.user
.
让用户进入 __init__()
只是解决方案的第一部分。您还需要使用该用户来过滤查询集:
class InvoiceCreationForm(forms.Form):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(InvoiceCreationForm, self).__init__(*args, **kwargs)
if self.user:
self.fields['provider'].queryset = Provider.objects.filter(user=self.user)