使Django只读字段在管理员上可见

2024-10-02 12:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Django项目,在这个项目中,我希望允许用户仅在add_视图上编辑特定字段。所以我重写了管理员py所以它可以在那里设置我的只读字段。但是Django不会显示readonly\u字段。在

对我来说,没有显示只读字段似乎真的很难。我的意思是,如果它是只读的,它说读的部分在哪里?它应该是可读的(仅限),而不是可编辑的。如果我想隐藏它,应该有一个名为hidden_fields之类的选项。你们不同意吗?在

我想知道是否有任何捷径可以让只读的_字段在我的管理上可见,但不可编辑。在

我的管理员py看起来像这样:

从django.contrib公司导入管理员 从核心模型导入框

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)

Tags: 项目djangopyselfviewadd编辑fields
2条回答

您应该重写^{},而不是设置^{cd1>}。在

def get_readonly_fields(request, obj=None):
    if obj is None:  # add form
        return []
    else:
        return ['colour']

我发现了问题,而这正是由于我的注意力不够。实际上Django确实显示readonly_字段,但我看不到,因为它们显示在表单的底部。当你不设置ModelForm.fields属性是它们到了底部,这和我的情况差不多。在

相关问题 更多 >

    热门问题