【问题标题】:How to display many to many relationship fields (if the many to many relationship is using 'through') in the Django Admin Area?如何在 Django 管理区域中显示多对多关系字段(如果多对多关系使用“通过”)?
【发布时间】:2016-11-16 14:49:02
【问题描述】:

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

模型.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.

我想显示一个允许我选择浇头的框或列表框。

这可能吗?

谢谢

【问题讨论】:

    标签: django django-models django-forms django-admin


    【解决方案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 上的管理员文档。

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 2023-03-06
      • 1970-01-01
      • 2016-04-18
      • 2015-02-15
      • 2021-11-13
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多