在管理员

时间:2015-05-22 21:30:53

标签: python django

我正在开发一个Django项目,我希望用户只允许用户在add_view上编辑特定字段。所以我已经覆盖了admin.py上的change_view方法,所以它可以在那里设置我的readonly_fields。但Django不会显示readonly_fields。

对我来说,似乎没有显示只读字段。我的意思是,如果它是只读的,它所说的部分在哪里读?它应该是可读的(仅),并且不可编辑。如果我想隐藏它,应该有一个名为hidden_​​fields的选项。你们不同意吗?

我想知道是否有任何直接的方法让我的管理员可以看到readonly_fields,但是不可靠。

我的admin.py看起来像这样:

来自django.contrib import admin 来自core.models导入框

class BoxAdmin(admin.ModelAdmin):
    def change_view(self, request, object_id, form_url='', extra_context=None):
        self.readonly_fields = ('colour',)
        return super(BoxAdmin, self).change_view(request, object_id)

    def add_view(self, request, form_url='', extra_context=None):
        self.readonly_fields = []
        return super(BoxAdmin, self).add_view(request, extra_context=c)

2 个答案:

答案 0 :(得分:1)

您应该覆盖get_readonly_fields

,而不是设置ImageView
self.readonly_fields

答案 1 :(得分:0)

我发现了问题,而且恰好是我缺乏关注。实际上Django确实显示了readonly_fields但我看不到它,因为它们显示在表单的底部。当你没有设置ModelForm.fields属性时,它们会转到底部,这几乎就是我的情况。