如何根据另一个字段的值在Django Admin中创建一个readonly或不可编辑的字段?
我使用过readonly_fields=('amount',)
但这不会解决我的问题,因为我需要根据其他字段来管理它。
答案 0 :(得分:20)
您可以覆盖管理员的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
答案 1 :(得分:1)
要从另一个字段填写一个字段,您需要向相关的prepopulated_fields
类添加ModelAdmin
属性。例如:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
可以找到相关文档here。
但是,在我目前使用的django版本(1.3)中,当使用readonly_fields
时,这似乎会产生错误。
答案 2 :(得分:0)
在类的主体中声明任何永久readonly_fields,因为readonly_fields类属性将从验证中访问