Я работаю с Django версии 2.2.2
Я использую админский сайт django.
У меня есть класс с именем Author и другой с именем Book .
Автор может иметь много книг.
Я настроил книгу как TabularInline в админке django.
Пока все хорошо.
Теперь я хочу добавить несколько дополнительных динамических полей в форму BookInline.
Классы:
from django.db import models
# Create your models here.
class Author(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.PROTECT)
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
Конфигурация администратора:
from django import forms
from django.contrib import admin
from books.models import Book, Author
# Register your models here.
class BookForm(forms.ModelForm):
class Meta():
fields = '__all__'
model = Book
class BookInline(admin.TabularInline):
model = Book
extra = 1
form = BookForm
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
inlines = [
BookInline,
]
Я попробовал это в форме, но не появилось в форме страницы:
class BookForm(forms.ModelForm):
class Meta():
fields = '__all__'
model = Book
def __init__(self, *args, **kwargs):
forms.ModelForm.__init__(self, *args, **kwargs)
self.fields['extra_1'] = forms.CharField(max_length=200)
В другом случае поле появляется. Но мне нужно, чтобы он создавался динамически, а не статично.
class BookForm(forms.ModelForm):
extra_field = forms.CharField(label='extra_field', max_length=100)
class Meta():
fields = '__all__'
model = Book
Как добавить некоторые дополнительные поля динамически в форму, используемую TabularInline или StackedInline?