我毫不怀疑这将是一个非常愚蠢的问题。但我真的无法理解,所以无论如何我都会问它。
在/svsite/src/svsite/member/models/svuser.py(一个不寻常的位置,请参阅此问题Place Django admin forms in different files)。
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin, UserChangeForm as DjangoUserChangeForm
from svsite.member.models.svuser import svUser
class UserChangeForm(DjangoUserChangeForm):
class Meta:
pass
class svUserAdmin(UserAdmin):
form = UserChangeForm
readonly_fields = ('date_joined', 'last_login', 'last_update', )
fieldsets = \
(
(
'Login',
{
'classes': ('collapse', ),
'fields':
(
'username',
'password',
'is_active',
'email_verified',
'awaiting_user_confirmation',
),
}
),
(
'Personal info',
{
'fields':
(
'first_name',
'middle_name',
'last_name',
),
}
),
)
[...]
在/svsite/src/svsite/member/admin/svuser.py的模型中:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, UserManager
class svUser(User):
email_verified = models.BooleanField(default = False)
awaiting_user_confirmation = models.BooleanField(
_('approved by board'), default = False, help_text=_('This user\'s identity was confirmed by the board or another authority.'))
[...]
我得到的错误:
'svUserAdmin.fieldsets[0][1]['fields']' refers to field 'password' that is missing from the form.
如果我评论密码,则错误会移至下一个字段。如果它是默认的用户模型字段或我在继承自用户的svUser中添加的字段,则独立。非常令人惊讶(对我来说),用户名似乎是唯一有效的字段,没有问题。
我发现了这个问题Django ModelAdmin - fieldsets ... field 'date' missing from the form,即使字段不是auto_now,我也将它们添加到readonly_fields,这使得错误消失了。显然,将所有字段设为只读是不可取的。
这可能是一些与代码无关的愚蠢但我真的找不到它,在我看来它确实应该有效。非常感谢任何帮助!
答案 0 :(得分:2)
问题似乎是因为您正在使用ModelForm
表示您未编辑的模型。
我尝试了一个类似的情况并得到了类似的错误模式。
class UserChangeForm(DjangoUserChangeForm):
class Meta:
model = svUser # update the model - default form points to User