Ich versuche, einem InlineFormset mit dem folgenden Code benutzerdefinierte Felder hinzuzufügen, aber die Felder werden nicht im Django Admin angezeigt. Ist das InlineFormset zu gesperrt, um dies zu ermöglichen? Mein print "ding" -Test wird wie erwartet ausgelöst, ich kann die form.fields ausdrucken und sie alle dort sehen, aber die tatsächlichen Felder werden nie im Admin gerendert.Wie füge ich benutzerdefinierte Felder zu InlineFormsets hinzu?
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)
Nicht das, was ich höre, hatte gehofft, aber na ja. Zumindest ist es bestätigt. – Soviut