我的表單中有choiceField
,我顯示過濾的數據。要過濾數據,我需要兩個參數。第一個不是問題,因爲我可以直接從一個對象中取出它,但第二個是動態生成的。下面是一些代碼:Django訪問數據傳遞給表單
class GroupAdd(forms.Form):
def __init__(self, *args, **kwargs):
self.pid = kwargs.pop('parent_id', None)
super(GroupAdd, self).__init__(*args, **kwargs)
parent_id = forms.IntegerField(widget=forms.HiddenInput)
choices = forms.ChoiceField(
choices = [
[group.node_id, group.name] for group in Objtree.objects.filter(
type_id = ObjtreeTypes.objects.values_list('type_id').filter(name = 'group'),
parent_id = 50
).distinct()] + [[0, 'Add a new one']
],
widget = forms.Select(
attrs = {
'id': 'group_select'
}
)
)
我想改變傳遞到Objtree.objects.filter
的PARENT_ID。正如你所看到的,我嘗試了在init函數中,以及kwargs['initial']['parent_id']
,然後用self
來調用它,但這不起作用,因爲它超出了範圍......這幾乎是我最後的努力。我需要通過initial
參數或直接通過parent_id
字段加以處理,因爲它已保存其值(傳遞槽initial
)。
任何幫助表示讚賞,因爲我沒有想法。
謝謝,這個工作就像一個魅力,但因爲有'Objtree'和'ObjtreeTypes'沒有關係,我不能使用'type__name ='group''。我可以添加一個前衛的鑰匙,但現在並不需要。 +1 – realshadow 2010-06-16 16:48:06