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)
My problem was actually a bit different. My problem involved model inheritence and the django.contrib.admin User model.
This caused the problem:
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:
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.
The error is due to date having
auto_now_add=True
(orauto_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
: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....