Django Forms如何在ModelForm中访问当前请求用户



我正在做一个艰难的django项目,我又被卡住了。在我的ModelForm实现中,我有这个表单。所以我想在assign字段中过滤查询集,所以如果我这样做assign.objects.filter(user_id=1),它会向每个用户显示这个查询集,但我想把请求用户放在这个查询集中。如何访问当前请求用户?

class SomeModelForm(forms.ModelForm):
assign = forms.ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple,
queryset=Assign.objects.all(),
)
class Meta:
model = SomeModel
fields = '__all__'

将一个额外的user对象传递到表单,然后根据用户进行筛选。

forms.py

class SomeModelForm(forms.ModelForm):
assign = forms.ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple,
queryset=Assign.objects.none(),
)
class Meta:
model = SomeModel
fields = '__all__'
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
if user:
self.fields['assign'].queryset = Assign.objects.filter(user=user)

视图.py

form = SomeModelForm(user=request.user)

只需编写即可实现

username = request.user.username
print(username)

它将打印当前登录的用户名。

最新更新