2009-12-03 74 views
2

我有一个ModelMultipleChoiceField()字段的表单。该表单用于向用户的朋友发送消息。这意味着,而不是一个普通的查询集(例如Friends.objects.all()),我想把类似queryset = user.friends.all()有没有方法来创建一个特定的表单实例DJANGO?

这可能吗?

+0

这取决于你的用户模型是什么样子。你如何存储给定用户的朋友是谁? – 2009-12-03 10:24:55

回答

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) 
    [...] 
2

最简单的方法就是关闭。别担心,如果你不知道那是什么,只是定义表单您的看法是这样

def my_view(...): 
    user = ... 
    class MessageForm(ModelForm): 
     friends = forms.ModelMultipleChoiceField(queryset=user.friends.all()) 
     text = ... 
    form = MessageForm(...) 

还有其他的方法,但是这是迄今为止最容易的。

相关问题