Django-基于父实例的内联字段值

Django-基于父实例的内联字段值,django,django-forms,django-admin,Django,Django Forms,Django Admin,我正在尝试根据父窗体/实例的属性设置内联上的选项字段的默认值 在伪代码中,它看起来像: def get_form(self, ***): if self.parent.instance && self.parent.instance.field_x == "y": self.field_name.choices = ... 我在Google上搜索过,但似乎找不到任何关于从内联表单中引用父表单的内容 也许我必须以另一种方式来执行此操作,并从父级内部访问内联线 d

我正在尝试根据父窗体/实例的属性设置内联上的选项字段的默认值

在伪代码中,它看起来像:

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 = ...

上述任何一种方法都是可能的吗?

您可以使用get\u form\u kwargs方法,并像这样将选择传递到form 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\u form\u kwargs方法中执行父对象检查,然后传入另一个选项(我想)

您尝试过这个吗?我经常这样做。使用构造形式而不是获取形式。