2016-11-16 95 views
0

我知道很容易在管理区域显示外键的字段,但是如果使用through,我如何显示多对多关系的字段?如何在Django管理区显示多对多关系字段(如果多对多关系使用'through')?

Models.py:

class Pizza(models.Model): 
    toppings = models.ManyToManyField(Topping, through='PizzaTopping') 

class Topping(models.Model): 
    topping = models.CharField(max_length=255) 

class PizzaTopping(models.Model): 
    pizza = models.ForeignKey(Pizza) 
    topping = models.ForeignKey(Topping) 

Admin.py:

class PizzaAdmin(admin.ModelAdmin): 
    fieldsets = (
     (None, { 
      'fields': ('toppings') 
     }), 
    }) 
) 

这将产生以下错误:

<class 'pizzas.admin.PizzaAdmin'>: (admin.E013) The value of 'fieldsets[0][1]["fields"]' cannot include the many-to-many field 'toppings' because that field manually specifies a relationship model. 

我想显示一个框或列表框,让我选择打顶。

这可能吗?

谢谢

回答

1

您可以将内容显示为内嵌。

from django.contrib import admin 

class ToppingInline(admin.TabularInline): 
    model = PizzaTopping 

class Pizza(admin.ModelAdmin): 
    inlines = [ 
     ToppingInline, 
    ] 
    exclude = ('toppings',) 

有关更多信息,请参阅管理员文档working with many-to-many models

+0

干杯阿拉斯代尔。 –