我知道你可以在模型的admin.py中设置readonly_fields但是我试图让一个字段只读取依赖于它在数据库中的(保存的)值。
我可以创建自定义字段类,但无法传递模型实例的值,因此我可以实现上述目的。
例如
div {
width: 300px;
background: orange;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
在模型中
class MytypeField(models.CharField):
def __init__(self,*args,**kwargs):
PAGE_LAYOUT_CHOICES = (
('column1','One Column'),
('column2','Two Columns')
)
kwargs['max_length'] = 7
kwargs['choices'] = PAGE_LAYOUT_CHOICES
kwargs['default'] = 'column1'
super(MytypeField,self).__init__(*args,**kwargs)
有没有办法在admin.py中而不是在模型本身中执行此操作?我无法将模型实例传递给这个自定义类,我确信不管怎么说都不是这样做的!
非常感谢!
答案 0 :(得分:1)
是的,您可以在模型管理员中,模型管理员使用方法get_readonly_fields
:
class MyAdmin(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
if obj and obj.layout:
return self.readonly_fields + ('layout', )
return self.readonly_fields