我的表单中有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