5

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

我试过这个:Django admin:如何在模型中显示一个标记为 editable=False' 的字段?

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

但是该字段仍然无法出现在管理页面上。

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

#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

4

1 回答 1

0

您应该通过权限来处理这个用例:只有拥有模型更改权限的用户才能真正更改它。这些权限默认存在于 Django 中。您只需要在显示表单之前检查它们。

它们还可以用于更细粒度的控制,例如仅显示某些字段。但是这个逻辑必须由你在你的视图和模板中实现。

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

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

于 2017-06-23T11:22:42.630 回答