【发布时间】:2011-03-04 12:54:51
【问题描述】:
我的表单中有一个choiceField,用于显示过滤后的数据。要过滤数据,我需要两个参数。第一个没有问题,因为我可以直接从一个对象中获取它,但是第二个是动态生成的。这是一些代码:
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 传递)。
感谢任何帮助,因为我的想法已经不多了。
【问题讨论】:
标签: python django forms django-forms django-models