12

如何根据另一个字段的值使 Django Admin 中的字段只读或不可编辑?我用过readonly_fields=('amount',),但这不能解决我的问题,因为我需要根据另一个字段来管理它。

4

3 回答 3

28

您可以覆盖管理员的get_readonly_fields方法:

class MyAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj and obj.another_field == 'cant_change_amount':
            return self.readonly_fields + ('amount',)
        return self.readonly_fields
于 2012-07-22T15:38:35.890 回答
1

要从另一个字段填写一个字段,您需要向prepopulated_fields相关ModelAdmin类添加一个属性。例如:

class PostAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("title",)}

相关文档可以在这里找到。

但是,在我目前使用的 django 版本(1.3)中,这似乎readonly_fields也会在使用时产生错误。

于 2012-07-22T23:03:31.360 回答
0

在类的主体中声明任何永久 readonly_fields,因为 readonly_fields 类属性将从验证中访问

于 2012-10-09T06:50:47.863 回答