在管理界面中显示django_extensions的创建/修改字段

时间:2014-12-18 10:52:13

标签: django django-admin django-extensions

我的课程基于TimeStampedModel的{​​{1}}:

django-extentions

默认情况下,在管理界面中,from model_utils.models import TimeStampedModel class MyClass(TimeStampedModel): pass created字段不会显示在版本页modified中。

我试图通过此黑客强制在my_app/myclass/id的修改管理页面中显示createdmodified字段:

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. 版管理界面中显示createdmodified字段?

注1: MyClass是一个包含MyClass字段的字段很多的模型。我可以显示除基类ManyToMany中的createdmodified字段之外的所有字段。

注2:参考的管理页面是一行的版本页面:TimeStampedModel

2 个答案:

答案 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)。但是您应该首先编写上下文处理器和/或模板标记以获取写入值......依此类推......