首页 > 解决方案 > 如何在 django 的管理员中将此模型转换为不可编辑的模型?

问题描述

我创建了一个模型,但我需要一个不可编辑的模型。当我访问模型时,它只是显示文本,没有提供任何在管理面板中更新记录的选项。

模型.py

class Contact(models.Model):
    name = models.CharField(max_length=160)
    email = models.EmailField()
    subject = models.CharField(max_length=255)
    message = models.TextField()

    def __str__(self):
        return self.subject

在搜索时,我得到了有关 readonly 的信息,但我仍然不明白如何使用它。

标签: python-3.xdjangodjango-modelsdjango-admin

解决方案


有两种方法可以做到这一点。一,editable=False为所有字段制作,那么它在任何地方都不能食用(modelform和adminsite):

class Contact(models.Model):
    name = models.CharField(max_length=160, editable=False)
    email = models.EmailField(editable=False)
    subject = models.CharField(max_length=255, editable=False)
    message = models.TextField(editable=False)

二,在管理站点中,使用readonly_fields

class ContactAdmin(admin.ModelAdmin):
    readonly_fields = ('name', 'email', 'subject', 'message')

admin.site.register(Contact, ContactAdmin)

推荐阅读