如何创建管理员无法更改的模型?
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',)
但这样做的问题是,尽管不允许更改任何内容,但您会在编辑页面上看到保存按钮,这可能不是您想要的
我需要创建管理员无法创建的 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',)
但这样做的问题是,尽管不允许更改任何内容,但您会在编辑页面上看到保存按钮,这可能不是您想要的