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

标签 django django-forms django-admin

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

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

def get_form(self, ***):
   if self.parent.instance && self.parent.instance.field_x == "y":
      self.field_name.choices = ...

我在谷歌上搜索过,但似乎找不到任何关于从内联中引用父表单的信息。

也许我必须以相反的方式执行此操作,并从父级内部访问内联?
def get_form(self, ***):
   if self.instance:
      for inline in self.inlines:
          if instanceof(inline, MyInline):
             inline.field_name.choices = ...

以上有没有可能?

最佳答案

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

关于Django - 基于父实例的内联字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664943/

相关文章:

django - 使用Tag模型创建ManytoMany关系

django - 缓存值未出现在 Redis 中

django - 在运行时单元测试 Django Rest Framework 身份验证

javascript - 将 javascript 变量发送到 Django View

python - 在 django admin 中表示多对多关系的更好方法

python - 在 Django 中的不同 View 之间传递数据

python - Django 'DateField' 对象没有属性 'is_hidden'

Django,表单字段的唯一ID

python - 覆盖 AdminSite 以附加自定义 url

python - 根据值在 Admin 中自定义 Django 表单字段