首页 > 解决方案 > Wagtail - 如何保存使用包含 M2M 的 InlinePanel 的记录

问题描述

我有一个模型,它使用InlinePanel来引用另一个模型 ( ClubTimetable),该模型本身包含与 的 M2M 关系DayOfTheWeek。似乎我无法保存记录,因为ClubTimetable尚未保存并且无法创建与 的 M2M 关系DayOfTheWeek,导致以下错误:

"<ClubTimetables: Club Timetable (str) 18:00:00>" needs to have a value for field "id" before this many-to-many relationship can be used.

我能做些什么来解决这个问题?

我的模型看起来像这样

# ClubManager

@register_snippet
class ClubManager(ClusterableModel):

    name = models.CharField('Club name',
                            max_length=255,
                            help_text='The name of the club.')

    panels = [
        FieldPanel('name'),
        InlinePanel('club_timetable', heading='Timetable Information')
    ]
# ClubTimetables

class ClubTimetables(Orderable, AddressBase):

    attached_to = ParentalKey(
        'club.ClubManager', related_name='club_timetable')

    weekday = models.ManyToManyField(DaysOfTheWeek)

    start_time = models.TimeField()
    end_time = models.TimeField()

    panels = [ ... ] + AddressBase.panels
# DaysOfTheWeek

class DaysOfTheWeek(models.Model):

    weekday = models.CharField(max_length=9)

    def __str__(self):
        return self.weekday

在视觉上,它看起来像这样

(最初的) 初始视图

(添加时间表) 添加时间表后

标签: djangowagtail

解决方案


推荐阅读