2016-11-16 70 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

乾杯阿拉斯代爾。 –