Подтвердить что ты не робот

Django - значения полей Inline на основе родительского экземпляра

Я пытаюсь установить значения по умолчанию для поля выбора в строке, основанной на свойствах родительской формы/экземпляра.

В псевдокоде он выглядит примерно так:

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

Возможны ли какие-либо из вышеперечисленных возможностей?

4b9b3361

Ответ 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 и передать другой выбор (я думаю)