Дополнительное поле ModelForm без метки, не отображается в InlineModelAdmin - PullRequest
1 голос
/ 15 мая 2019

Чтобы добавить дополнительное поле на странице администратора add, будет работать следующий код:

models.py:

class Parent(models.Model):
    pass


class Child(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.PROTECT)

forms.py:

class ChildForm(forms.ModelForm):
    extra_field = forms.CharField()

    class Meta:
        model = Child
        fields = '__all__'

admin.py:

@admin.register(models.Child)
class ChildAdmin(admin.ModelAdmin):
    form = forms.ChildForm

Как можно добавить такое же дополнительное поле, когда Child является встроенным в Parent на странице Parent add?


следующий admin.py:

class ChildInline(admin.TabularInline):
    model = models.Child
    form = forms.ChildForm


@admin.register(models.Parent)
class ParentAdmin(admin.ModelAdmin):
    inlines = (ChildInline,)

Результат:

Traceback (most recent call last):
  File "django/db/models/options.py", line 617, in get_field
    return self.fields_map[field_name]
KeyError: 'extra_field'

...

django.core.exceptions.FieldDoesNotExist: Child has no field named 'extra_field'

...

AttributeError: Unable to lookup 'extra_field' on Child or ChildInline

1 Ответ

1 голос
/ 28 мая 2019

Согласно этот ответ , добавляя метку, заставит встроенные функции работать как положено:

class ChildForm(forms.ModelForm):
    extra_field = forms.CharField(label='Extra Field')

    class Meta:
        model = Child
        fields = '__all__'

Соответствующий тикет: https://code.djangoproject.com/ticket/30520#ticket

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...