Django 管理员 : hide read-only fields on new records?

标签 django django-admin

我正在使用 Django 管理站点,记录上有一些只读字段:

class BookAdmin(admin.ModelAdmin):
    fieldsets = [
    (None, {'fields': ['title', 'library_id', 'is_missing', \
                       'transactions_all_time']}),
    ]
    readonly_fields = ['transactions_all_time',]
    list_display = ('library_id', 'author', 'title')

这在编辑记录时非常有效 - transactions_all_time字段是只读的,就像我想要的那样。

但是,当添加新记录时,它的行为有点奇怪。我在页面底部看到一个只读部分,我无法编辑它,此时它无关紧要。

如果在添加新记录时根本不存在此字段会好得多。

是否有任何 Django 选项可以在添加新记录时不显示只读字段?我知道我可以在 add_form.html 上破解 CSS隐藏它,但有更好的方法吗?

谢谢。

最佳答案

我有类似的问题。像这样解决了

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields = ('field_one',)
    def get_readonly_fields(self, request, obj=None):
        if obj: # Editing
            return self.readonly_fields
        return ()

关于Django 管理员 : hide read-only fields on new records?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091813/

相关文章:

django - 在具有两个 View 的一个页面中处理多个 Django 表单的正确方法?

python - Django 多步表单向导模型表单

python - 无法在不导致错误的情况下列出我在 list_editable 中的所有字段

Django:按用户角色过滤用户

python-3.x - Django 管理员,不能按 : Exception Value: 'dict' object has no attribute '_meta' 分组

python - 忽略/跳过 python bandit 安全问题报告中的某些问题的方法是什么?

python - 如何提取具有最大值的 Django 对象?

python - 同步数据库模型 openshift

django - HTTP PUT 在 django Rest 框架中无法正常工作

django - Django管理员: Making a required field read-only