如何解决如何使admin.TabularInline中的字段之一成为条件?
有没有办法使admin.TabularInline
中的一个字段成为条件字段?
例如
class ParameterInline(admin.TabularInline):
form = ParameterForm
fields = ["ParameterA","ParameterB"]
如果仅在设置了其他ParameterB
的情况下才想显示True
,怎么办?
谢谢。
解决方法
您可以通过覆盖get_fields
方法来实现此目的:
class ParameterInline(admin.TabularInline):
form = ParameterForm
fields = ["ParameterA"]
def get_fields(self,request,obj=None):
fields = super(ParameterInline,self).get_fields(request=request,obj=obj)
if True:
return fields + ['ParameterB']
return fields
,
最后,我设法解决了这个问题,尽管我感觉这不是最有效的方法。
我现在有两个这样的内联,只有一个区别
class ParameterInlineA(admin.TabularInline):
form = ParameterForm
fields = ["ParameterA","ParameterB"]
class ParameterInlineB(admin.TabularInline):
form = ParameterForm
fields = ["ParameterA"]
和以下函数可在整个内联之间动态交换;
def get_inline_instances(self,obj=object):
inliness = self.inlines
if obj is not None:
inlines = inliness
obj = <registeredModel>.objects.get(id = obj.id)
if obj.<attributeToSortBy> is None:
inlines.remove(ParameterInlineA)
inlines.append(ParameterInlineB)
return [inline(self.model,self.admin_site) for inline in inlines]
else:
inlines.append(ParameterInlineA)
inlines.remove(ParameterInlineB)
return [inline(self.model,self.admin_site) for inline in inlines]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。