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