2017-05-05 45 views
0

我有一個查詢我的數據庫,像這樣一種形式:顯示對象的多個值在Django ModelChoiceField

class Pull(forms.Form): 
    select = forms.ModelChoiceField(queryset=OrderEntry.objects.values_list 
    ('val_a', 'val_b'), required=True) 

默認情況下,它會顯示的值,但它確實醜陋,不好玩看。在網頁上,它看起來像這樣在下拉菜單:

('A','B') 
('C','D') 

我希望它看起來是這樣的:

A | B 
C | D 

還是真的,反正這將是方便用戶讀。有沒有辦法實現這一目標? 謝謝!

回答

2

子類ModelChoiceField並定義label_from_instance以返回所需的值。

class MyModelChoiceField(forms.ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "{} | {}".format(obj.val_a, obj.val_b) 

現在使用的是一個標準的queryset:

select = MyModelChoiceField(queryset=OrderEntry.objects.all(), required=True) 
+0

大,響應速度快,謝謝!當我嘗試創建子類時,我會遇到一些語法錯誤。 「ModelChoiceField未定義」。 – GreenSaber

+0

對不起,更新使用'形式'參考一致性。 –

+0

完美,謝謝!我會選擇這個作爲答案!如果你喜歡它,我有一個獎勵問題。我如何均勻分配所有對象? – GreenSaber