Django admin:使用'editable = False'编辑模型字段

时间:2012-07-19 11:45:13

标签: django django-forms django-admin

我希望管理员能够编辑普通用户无法编辑的字段。例如,作者或订阅者等。

我试过这个:Django admin: How to display a field that is marked as editable=False' in the model?

(答案中给出的可编辑部分)

但该字段仍无法显示在管理页面上。

供参考,这里有一些信息:

#models.py
class MyModel(models.Model):
    myfield = models.ManyToManyField(User, blank=True, editable=False)

#admin.py
class MyModelAdminForm(forms.ModelForm):
    myfield = models.ManyToManyField(User, blank=True, editable=True)

    class Meta(object):
        model = MyModel

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelAdminForm

admin.site.register(MyModel, MyModelAdmin)

如果我将模型更改为editable = True状态,​​那么我会在管理页面上看到该字段。 (正如预期的那样)

我正在使用Django 1.3,Python 2.6

1 个答案:

答案 0 :(得分:0)

您应该通过权限处理此用例:只允许具有模型更改权限的用户真正更改它。默认情况下,这些权限存在于Django中。您只需在显示表单之前检查它们。

也可以用于更细粒度的控制,例如仅显示某些字段。但是,您必须在视图和模板中实现该逻辑。

查看:https://docs.djangoproject.com/en/1.11/topics/auth/default/#default-permissions

如果您仍需要修改不可编辑的字段,请查看:https://stackoverflow.com/a/44720169/621690