我有一张表格要求提供标题和用户列表。我的问题是我想显示数据库中的所有用户,但排除当前经过身份验证的用户。我尝试了几种选择,但他们不对。你可以帮帮我吗?谢谢你:
from django import forms
class FormCal(forms.Form):
titulo = forms.CharField(max_length=100)
usuarios = forms.ModelMultipleChoiceField(queryset=User.objects.all(), widget=forms.CheckboxSelectMultiple(), required=False)
答案 0 :(得分:1)
您可以在表单类的__init__
中访问请求对象。您可以在那里动态调整查询集。
class FormCal(forms.Form):
titulo = forms.CharField(max_length=100)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(FormCal, self).__init__(*args, **kwargs)
# exclude logged in user from queryset
usuarios_queryset = User.objects.all().exclude(username=self.request.user.username)
# add field to form
self.fields['usuarios'] = forms.ModelMultipleChoiceField(
queryset=usuarios_queryset,
widget=forms.CheckboxSelectMultiple(),
required=False)