Доступ к экземпляру родительской модели из формы модели встроенного администратора
Я использую TabularInline в админке Django, настроенный для показа одной дополнительной пустой формы.
class MyChildInline(admin.TabularInline):
model = MyChildModel
form = MyChildInlineForm
extra = 1
Модель выглядит как MyParentModel-> MyChildModel-> MyInlineForm.
Я использую пользовательскую форму, чтобы я мог динамически искать значения и заполнять выбор в поле. например
class MyChildInlineForm(ModelForm):
my_choice_field = forms.ChoiceField()
def __init__(self, *args, **kwargs):
super(MyChildInlineForm, self).__init__(*args, **kwargs)
# Lookup ID of parent model.
parent_id = None
if "parent_id" in kwargs:
parent_id = kwargs.pop("parent_id")
elif self.instance.parent_id:
parent_id = self.instance.parent_id
elif self.is_bound:
parent_id = self.data['%s-parent'% self.prefix]
if parent_id:
parent = MyParentModel.objects.get(id=parent_id)
if rev:
qs = parent.get_choices()
self.fields['my_choice_field'].choices = [(r.name,r.value) for r in qs]
Это прекрасно работает для встроенных записей, привязанных к фактической записи, но для дополнительной пустой формы она не отображает никаких значений в моем поле выбора, так как не имеет никакого идентификатора записи и не может найти связанный MyParentModel. запись.
Я проверил все значения, которые смог найти (args, kwargs, self.data, self.instance и т. Д.), Но я не могу найти какой-либо способ доступа к родительскому объекту, с которым связан табличный inline. Есть какой-либо способ сделать это?