python - 第一次保存对象时,使 django 模型字段只读或在管理中禁用

标签 python django django-admin django-admin-actions

我想在最初保存时禁用 django admin 模型中的几个字段。

"<input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">"

像这样。

我的模型是:

class Blogmodel(models.Model):
    tag = models.ForeignKey(Tag)
    headline = models.CharField(max_length=255)
    image=models.ImageField(upload_to=get_photo_storage_path, null=True, blank=False)
    body_text = models.TextField()
    pub_date = models.DateField()
    authors = models.ForeignKey(Author)
    n_comments = models.IntegerField()

我想禁用“标题”和“n_comments”。 我在 admin.py 文件中尝试过,但它没有在初始保存时禁用字段。但是为了编辑它的工作字段,它使字段只读。

在 admin.py 中

class ItemAdmin(admin.ModelAdmin):
    exclude=("headline ",)
    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ['headline']
        else:
            return []

标题被禁用但仅供编辑。我想在创建对象时禁用它。即首先保存。 任何人都可以指导我吗?

最佳答案

无需覆盖 get_readonly_fields。最简单的解决方案是:

class ItemAdmin(admin.ModelAdmin):
    exclude=("headline ",)
    readonly_fields=('headline', )

当使用 readonly_fields 时,您不能覆盖 get_readonly_fields,因为默认实现读取 readonly_fields 变量。因此,只有当您必须有一些逻辑来决定哪个字段应该是只读的时候才重写它。

关于python - 第一次保存对象时,使 django 模型字段只读或在管理中禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275239/

相关文章:

python - 在 Tornado 中,如何查看在 PeriodicCallback 调用的协程中引发的异常?

python - 仅包含 np 数组的一列上的 Pandas 相关性

python - Django - 何时最好计算大量数据的统计信息

django - list_display - 方法的 bool 图标

django - 如何在没有输入字段的情况下在 Django 模型中存储数据

Python dfply 包 - 加入

python - 如何将 Sphinx doctests 作为 setup.py 的一部分运行?

javascript - 在客户端 Javascript 中调用 Django `reverse`

django - 如何使用 ManifestStaticFilesStorage 从散列中排除路径

python - 如何在 Django 管理站点中显示 django-simple-history 的历史表?