基于模型属性的Django管理条件显示内联线

基于模型属性的Django管理条件显示内联线,django,admin,inlines,Django,Admin,Inlines,我有带字段的市场模型: class VacationEvent(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) process_fba = models.BooleanField(default=True) @property def has_amazon_fba_vacation(self): return hasattr(self, 'amazon

我有带字段的市场模型:

class VacationEvent(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    process_fba = models.BooleanField(default=True)

    @property
    def has_amazon_fba_vacation(self):
        return hasattr(self, 'amazon_fba_vacation')
在admin.py中:

class FBAInline(admin.StackedInline):
    model = AmazonFBAVacation
    can_delete = False
    verbose_name_plural = 'amazon fba vacation'
    fk_name = 'event'
创建\更新VacationEventAdmin时,我需要有条件地显示FBAInline类。list_filter显示“process_fba”字段的true\false值,因此如果为true,则应显示FBAInline:

@admin.register(VacationEvent)
class VacationEventAdmin(admin.ModelAdmin):
    inlines = []
    list_display = ('id', 'user', 'holiday_name', 'start_date', 'end_date', 'process_fba', 'process_fbm', 'process_walmart', 'process_ebay')
    list_filter = ['process_fba', 'process_fbm', 'process_walmart', 'process_ebay', 'status',]
    search_fields = ['holiday_name', 'user__username']

# if VacationEvent.process_fba and VacationEvent.has_amazon_fba_vacation:
#     inlines.append(FBAInline)

# try:
#     getattr(VacationEvent, 'process_fba')
# except AttributeError:
#     print "doesn't"
# else:
#     inlines.append(FBAInline)

我尝试获取attr,但不了解如何比较admin的字段值。谢谢您的帮助。

覆盖
使用\u内联线获取\u表单集\u
方法

get_formsets_with_inlines(self, request, obj=None):
    for inline in self.get_inline_instances(request, obj):
        if obj and obj.has_amazon_fba_vacation:
            yield inline.get_formset(request, obj), inline