Доступ к экземпляру родительской модели из модели встроенного администратора

Я использую 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. Есть ли способ сделать это?

17
задан Cerin 23 February 2012 в 22:53
поделиться