我有一个带有ModelMultipleChoiceField()
字段的表单。表单用于向用户的朋友发送消息。这意味着我不想使用通用查询集(例如Friends.objects.all()
),而是想放置queryset = user.friends.all()
之类的内容。
这可能吗?
答案 0 :(得分:3)
这样的事情:
#forms.py
class YourForm:
def __init__(data, user):
self.base_fields['your_field'].queryset = user.friends.all()
super(YourForm, self).__init__(data)
#views.py
def your_view(request):
if request.method == 'POST':
form = YourForm(request.POST, request.user)
else:
form = YourForm(user=request.user)
[...]
答案 1 :(得分:2)
最简单的方法是关闭。不要担心,如果你不知道那是什么,只需在你的视图中定义你的里面的
def my_view(...):
user = ...
class MessageForm(ModelForm):
friends = forms.ModelMultipleChoiceField(queryset=user.friends.all())
text = ...
form = MessageForm(...)
还有其他方法,但到目前为止这是最简单的方法。