次のコードを使用してカスタム フィールドを InlineFormset に追加しようとしていますが、フィールドが Django Admin に表示されません。これを許可するには、InlineFormset があまりにもロックダウンされていますか? 私の印刷「ding」テストは期待どおりに起動し、form.fields を印刷してそこにすべて表示できますが、実際のフィールドは admin でレンダリングされません。
admin.py
from django.contrib import admin
import models
from django.forms.models import BaseInlineFormSet
from django import forms
from forms import ProgressForm
from django.template.defaultfilters import slugify
class ProgressInlineFormset(BaseInlineFormSet):
def add_fields(self, form, index):
print "ding"
super(ProgressInlineFormset, self).add_fields(form, index)
for criterion in models.Criterion.objects.all():
form.fields[slugify(criterion.name)] = forms.IntegerField(label=criterion.name)
class ProgressInline(admin.TabularInline):
model = models.Progress
extra = 8
formset = ProgressInlineFormset
class ReportAdmin(admin.ModelAdmin):
list_display = ("name", "pdf_column",)
search_fields = ["name",]
inlines = (ProgressInline,)
admin.site.register(models.Report, ReportAdmin)