2009-12-03 77 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(...) 

還有其他的方法,但是這是迄今爲止最容易的。

相關問題