2016-11-16 2 views
0

Я знаю, что легко отображать поля для внешних ключей в области администрирования, но как мне отображать поля для многих-многих отношений, если они используются?Как отображать многие из многих полей отношений (если отношения многих-многих используют «через») в области администрирования Django?

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. 

Я хочу, чтобы отобразить окно или ListBox, который позволяет мне для выбора доливки.

Возможно ли это?

Благодаря

ответ

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

Cheers Alasdair. –

Смежные вопросы