我的课程基于TimeStampedModel
的{{1}}:
django-extentions
默认情况下,在管理界面中,from model_utils.models import TimeStampedModel
class MyClass(TimeStampedModel):
pass
和created
字段不会显示在版本页modified
中。
我试图通过此黑客强制在my_app/myclass/id
的修改管理页面中显示created
和modified
字段:
MyClass
但这引发了以下异常:
from django.contrib import admin
from my_app.models import MyClass
class MyClassAdmin(admin.ModelAdmin):
fields = MyClass._meta.get_all_field_names()
admin.site.register(MyClass, MyClassAdmin)
知道如何在Exception Type: FieldError
Exception Value: Unknown field(s) (modified, created) specified for MyClass. Check fields/fieldsets/exclude attributes of class MyClassAdmin.
版管理界面中显示created
和modified
字段?
注1: MyClass
是一个包含MyClass
字段的字段很多的模型。我可以显示除基类ManyToMany
中的created
和modified
字段之外的所有字段。
注2:参考的管理页面是一行的版本页面:TimeStampedModel
答案 0 :(得分:7)
解决方案是使用readonly_fields
属性:
from django.contrib import admin
from my_app.models import MyClass
class MyClassAdmin(admin.ModelAdmin):
readonly_fields = ('created', 'modified', )
admin.site.register(MyClass, MyClassAdmin)
答案 1 :(得分:0)
Created和Modified是自我管理的字段。我认为“破解”功能并不是一个好主意。您可以在列表显示中显示这些字段,如下所示:
对于许多问题:
def <funcname>(self, obj):
return ', '.join([object.<object_field_you_want_to_display> for object in obj.<manyTomanyField>.all()])
<funcname>.short_description = 'Wanted name for column'
然后在list_display中:
list_display = (...., '<funcname>')
然后你想要显示你想要的所有字段(也创建和修改)
list_display(...all fields you want ..., '<funcname>', 'created', 'modified')
但如果您仍然认为应该在模板中添加这些字段(/includes/fieldset.html)。但是您应该首先编写上下文处理器和/或模板标记以获取写入值......依此类推......