![](/img/trans.png)
[英]How can I access attributes of a model in admin.TabularInline that is at the end of a manytomany relationship with defined through model
[英]How can I make one of the fields in admin.TabularInline conditional?
有沒有辦法如何使admin.TabularInline
一個字段admin.TabularInline
條件?
例如
class ParameterInline(admin.TabularInline):
form = ParameterForm
fields = ["ParameterA", "ParameterB"]
如果我想僅在其他設置為True
時才顯示ParameterB
怎么辦?
提前致謝。
您可以通過覆蓋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, request, 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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.