Próbuję dodać pola niestandardowe do formularza InlineFormset za pomocą następującego kodu, ale pola nie będą wyświetlane w administratorze Django. Czy formularz InlineFormset jest zbyt zablokowany, aby na to zezwolić? Mój test "ding" testuje się zgodnie z oczekiwaniami, mogę wydrukować pola formularzy i zobaczyć je wszystkie, ale rzeczywiste pola nie są nigdy wyświetlane w administracji.Jak dodać niestandardowe pola do InlineFormsets?
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)
Nie to miałem nadzieję usłyszeć, ale cóż. Przynajmniej to potwierdzone. – Soviut