簡體   English   中英

如何使 admin.TabularInline 中的字段之一有條件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM