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 = ...
Возможны ли какие-либо из вышеперечисленных возможностей?
Ответы
Ответ 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 и передать другой выбор (я думаю)