DJANGO有没有办法创建一个特定的Form实例?

时间:2009-12-03 09:44:26

标签: django django-forms

我有一个带有ModelMultipleChoiceField()字段的表单。表单用于向用户的朋友发送消息。这意味着我不想使用通用查询集(例如Friends.objects.all()),而是想放置queryset = user.friends.all()之类的内容。

这可能吗?

2 个答案:

答案 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(...)

还有其他方法,但到目前为止这是最简单的方法。