我正在尝试根据父窗体/实例的属性在内联中设置选项字段的默认值。
在伪代码中,它看起来像:
def get_form(self, ***):
if self.parent.instance && self.parent.instance.field_x == "y":
self.field_name.choices = ...
我在Google上搜索过,但似乎无法找到有关在内联中引用父表单的任何内容。
也许我必须反过来这样做,并从父母内部访问内联?
def get_form(self, ***):
if self.instance:
for inline in self.inlines:
if instanceof(inline, MyInline):
inline.field_name.choices = ...
上述任何一种可能吗?
答案 0 :(得分:1)
您可以使用get_form_kwargs方法并将选项传递给表单init方法,如此
class Form(forms.Form):
def __init__(self, *args, **kwargs):
choices = kwargs.pop('choices', None)
super(Form, self).__init__(*args, **kwargs)
form.field.choices = choices
class FormView(generic.FormView):
def get_form_kwargs(self, *args, **kwargs)
kwargs = super(FormView, self).get_form_kwargs()
kwargs['choices'] = choices
return kwargs
你可以在get_form_kwargs方法中检查你的父对象并传入一个不同的选择(我认为)