Django TabularInline字段在更新内联字段时出错

时间:2017-12-02 16:51:21

标签: python django django-admin

我有像

这样的模特
class Section(models.Model):
    section_title = models.CharField(max_length=200)
    section_tiles = models.ManyToManyField(Tile, blank=True)
    on_menu = models.BooleanField(default=False)
    section_is_active = models.BooleanField(default=True)

    class Meta:
        verbose_name = "Section"
        verbose_name_plural = "Sections"

    def __unicode__(self):
        return self.section_title



class Page(models.Model):
    page_title = models.CharField(max_length=200)
    page_sections = models.ManyToManyField(Section, blank=True)
    on_menu = models.BooleanField(default=False)
    page_is_active = models.BooleanField(default=True)

    class Meta:
        verbose_name = "Page"
        verbose_name_plural = "Pages"

    def __unicode__(self):
        return self.page_title

在管理员部分我有代码如:

class SectionTabularInline(admin.TabularInline):
    model = Page.page_sections.through

    class PageAdmin(admin.ModelAdmin):
        inlines = [SectionTabularInline,]

        list_display =[
        'page_title',
        'on_menu',
        ]

        list_filter =[
        'on_menu',
        ]

        search_fields = [
        'page_title',
        ]

        ordering = ['page_title']

    admin.site.register(Page, PageAdmin)

当我在页面的内嵌部分进行更改时,会发出错误"请更正以下错误。"没有任何其他信息。如果我从页面中删除部分并保存它,那么我可以从头开始重新分配它们。有没有办法改变它们而不先删除它们?

1 个答案:

答案 0 :(得分:0)

发件人:Save M2M "Through" Inlines in Django Admin

我发现了我的问题:如果您想要多对多关系,则需要保留原始模型的主键(id)。