我正在使用Django 2.2.2版
我正在使用Django管理网站。 我有一个名为 Author 的课程,另一个名为 Book 的课程。 作者可以拥有许多书籍。
我在Django管理员中将图书配置为TabularInline。
到目前为止还可以。
现在,我想在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使用的表单上动态添加一些额外字段?