【问题标题】:Django - Inline field values based on parent instanceDjango - 基于父实例的内联字段值
【发布时间】:2013-11-09 00:06:57
【问题描述】:

我正在尝试根据父表单/实例的属性在内联上设置选择字段的默认值。

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

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

以上都可以吗?

【问题讨论】:

标签: django django-forms django-admin


【解决方案1】:

您可以使用 get_form_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_form_kwargs 方法中检查您的父对象并传入不同的选择(我认为)

【讨论】:

    猜你喜欢
    • 2012-02-23
    • 2017-08-22
    • 1970-01-01
    • 2022-10-12
    • 2010-12-25
    • 2015-11-15
    • 2014-11-15
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多