如何创建管理员无法更改的模型?

How can create model that couldn't be changed by admin?

我需要创建管理员无法创建的 Django 模型,但他应该可以看到它。 它的内容将从站点输入。 我该怎么做?

您可以在 fields and readonly_fields.

上列出您想要的字段
class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')
    readonly_fields = ('name', 'title')

指定只读

在您的模型管理中,您可以指定不更改某些字段。

class ProfileAdmin(admin.ModelAdmin):
    readonly_fields = ('source', 'campaign')

只需将其放入您的 admin.py 中,然后在您注册网站时使用:

admin.site.register(Profile, ProfileAdmin)

而不是您目前可能正在使用的

admin.site.register(Profile)

基本上,如果您想禁用模型的可编辑性,您可能需要使用 Django Admin 的权限框架,如下所示:

class PersonAdmin
    def has_change_permission(self, request, obj=None):
        # only allows superusers to edit
        return request.user.is_superuser

您可能还想尝试 readonly_field,例如:

class PersonAdmin
    readonly_fields = ('name','sex',)

但这样做的问题是,尽管不允许更改任何内容,但您会在编辑页面上看到保存按钮,这可能不是您想要的