【发布时间】:2012-07-21 00:24:23
【问题描述】:
如何根据另一个字段的值使 Django Admin 中的字段只读或不可编辑?
我用过readonly_fields=('amount',),但这不能解决我的问题,因为我需要根据另一个字段来管理它。
【问题讨论】:
标签: django django-models django-forms
如何根据另一个字段的值使 Django Admin 中的字段只读或不可编辑?
我用过readonly_fields=('amount',),但这不能解决我的问题,因为我需要根据另一个字段来管理它。
【问题讨论】:
标签: django django-models django-forms
您可以覆盖管理员的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
【讨论】:
要从另一个字段填写一个字段,您需要将prepopulated_fields 属性添加到相关的ModelAdmin 类。例如:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
相关文档可以在here找到。
但是,在我目前使用的 django 版本(1.3)中,当同时使用readonly_fields 时,这似乎会产生错误。
【讨论】:
在类的主体中声明任何永久 readonly_fields,因为 readonly_fields 类属性将从验证中访问
【讨论】: