问题
I figured out what the problem was while writing this question. I post it anyway in case it could help someone else.
The error: 'FooAdmin.fieldsets[0][1]['fields']' refers to field 'date' that is missing from the form.
With the following code:
# models.py
from django.db import models
class Foo(Base):
date = models.DateField(auto_now_add=True)
title = models.CharField(max_length=255)
# admin.py
from django.contrib import admin
class FooAdmin(BaseAdmin):
list_display = ("title", "date")
fieldsets = (
(None, {
"fields": ("date", "title")
}),
)
admin.site.register(Foo, FooAdmin)
回答1:
The error is due to date having auto_now_add=True
(or auto_now=True
).
As the value is automatic, it's not editable, so it's not in the form. To solve that, add this in FooAdmin
:
readonly_fields = ("date",)
回答2:
My problem was actually a bit different. My problem involved model inheritence and the django.contrib.admin User model.
This caused the problem:
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.admin import UserAdmin
class AdminUser (UserAdmin):
fieldsets = UserAdmin.fieldsets + (
(_('APPS Info'), {'fields': ('agency', 'company')}),
)
where "agency" and "company" are fields of my User model that extends django's user model. Your solution of putting those fields in readonly_fields did fix the error, but then those fields were read only, which isn't what I wanted. I found that the problem was that the ModelForm used in django.contrib.admin was setting the model to Django's user model. So to fix it I added this:
from django.contrib.auth.admin import UserAdmin, UserChangeForm as DjangoUserChangeForm
from django.utils.translation import ugettext_lazy as _
from apps_models.users.models import User
class UserChangeForm(DjangoUserChangeForm):
class Meta:
model = User
class AdminUser (UserAdmin):
fieldsets = UserAdmin.fieldsets + (
(_('APPS Info'), {'fields': ('agency', 'company')}),
)
form = UserChangeForm
That's what I get for using Model inheritance... it isn't pretty, but it got the job done.
So it sounds like we were getting the same error, but for different reasons.
回答3:
It may also help some people to know the error also appears when there are incorrect fieldsets in the ModelAdmin, ...as when doing migrations and forgetting to delete removed fields....
来源:https://stackoverflow.com/questions/3516799/django-modeladmin-fieldsets-field-date-missing-from-the-form