我认为最好用一个例子来理解:
Pizzas和Toppings有很多关系。我想在TabularInline中显示Pizza的配料。
class ToppingInlineAdmin(admin.TabularInline):
model = Pizza.toppings.through
fields = ('topping',)
extra = 0
if not model.topping.count():
classes = ['collapse']
如您所见,如果披萨上没有浇头,我只想折叠表格内联。
代码model.topping.count()
不起作用。错误是:
AttributeError: 'ForwardManyToOneDescriptor' object has no attribute 'count'
如果披萨没有浇头,你知道如何完成,折叠表格内联吗?
谢谢。
答案 0 :(得分:1)
首先,model
应为Toppings
。
class ToppingInlineAdmin(admin.TabularInline):
model = Toppings
要在InlineModelAdmin上有条件地设置类,您需要覆盖接受该对象的方法,django不提供专门用于此功能的方法,但我已覆盖get_formset
作为示例
def get_formset(self, request, obj=None, **kwargs):
if not obj or not obj.toppings.count():
self.classes = ['collapse']
return super(ToppingInlineAdmin, self).get_formset(request, obj=obj, **kwargs)