Pas*_*nus 26 django django-forms django-admin
我在写这个问题时想出了问题所在.无论如何,我发布它,以防它可以帮助别人.
错误:'FooAdmin.fieldsets [0] [1] ['fields']'指的是表单中缺少的字段'date'.
使用以下代码:
# 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)
Run Code Online (Sandbox Code Playgroud)
Pas*_*nus 64
错误是由于日期有auto_now_add=True
(或auto_now=True
).
由于该值是自动的,因此不可编辑,因此不在表单中.要解决这个问题,请将其添加到FooAdmin
:
readonly_fields = ("date",)
Run Code Online (Sandbox Code Playgroud)
我的问题实际上有点不同.我的问题涉及模型继承和django.contrib.admin用户模型.
这导致了这个问题:
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')}),
)
Run Code Online (Sandbox Code Playgroud)
其中"代理"和"公司"是我的用户模型的字段,扩展了django的用户模型.你将这些字段放在readonly_fields中的解决方案确实修复了错误,但那些字段只是读取的,这不是我想要的.我发现问题是django.contrib.admin中使用的ModelForm将模型设置为Django的用户模型.所以要修复它我添加了这个:
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
Run Code Online (Sandbox Code Playgroud)
这就是我使用模型继承所获得的......它不是很漂亮,但它完成了工作.
所以听起来我们得到了同样的错误,但出于不同的原因.
归档时间: |
|
查看次数: |
11189 次 |
最近记录: |