只读模型并在django admin中显示为列表?

时间:2018-09-05 05:25:33

标签: python django django-admin

我想将数据库中的模型显示到我的Django管理员中。我要使用的只是显示详细信息,而不进行编辑。有没有办法以某种方式“禁用” Django管理中模型的CRUD功能?我似乎找不到办法。我当前的django版本是2.1.1。谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您需要使用只读字段。

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    ...
    fields = ['test-field-a']
    readonly_fields = fields

    def has_change_permission(self, request, obj=None):
        return False

答案 1 :(得分:0)

对于只读模型,您可以使用应用django-readonly-model

使用pip安装:

pip install django-readonly-model

在您的INSTALLED_APPS设置中添加“ readonly_model”:

INSTALLED_APPS = [
    ...
    'readonly_model',
]

只需使用:

from django.db import models

class Directory(models.Model):
    class Meta:
        read_only_model = True

如果您尝试记录某些内容,则会出现异常:

>>> Directory.objects.create(name='kg')
...
readonly_model.exceptions.ReadOnlyModel: Model 'app.models.Directory' is read-only