【问题标题】:ManyToManyField is not getting saved in Wagtail PageManyToManyField 没有保存在 Wagtail 页面中
【发布时间】:2018-02-23 18:12:48
【问题描述】:

我有一个 Wagtail Page 类的子类,它具有 django ManyToManyField 类型的字段。当我尝试创建页面对象的新实例时,我得到了 ManyToManyField 指向的对象列表,并且我可以选择多个项目。但是,当我尝试编辑同一页面时创建该页面后,似乎没有为 ManyToMany 字段保存数据。我知道在 Django ModelAdmin 中必须覆盖 save_related() 来保存 ManyToMany 字段数据。 Wagtail Page模型有类似的方法吗?

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    您应该将字段定义为 ParentalManyToManyField 关系,如下面的示例:http://docs.wagtail.io/en/v1.13.1/getting_started/tutorial.html#categories

    这是 ManyToManyField 的一个变体,它能够跟踪内存中的关系,允许它在预览和保存为草稿(它不会保存到正常的数据库记录中)等情况下工作。

    【讨论】:

    • 我正在尝试使用 ParentalManyToManyField,但在保存页面时出现此错误:”需要在此多对多之前为字段“blogpage”设置一个值可以使用关系。
    • 没关系。我收到此错误,因为我有另一个使用 ManyToManyField 的字段。一旦我用 ParentalManyToManyField 替换它,它现在就可以工作了。
    【解决方案2】:

    我能够使用 'after_edit_page' 和 'after_create_page' 挂钩来保存页面的 ManyToMany 字段的数据。

    【讨论】:

    • 这在执行预览和保存为草稿等操作时可能会产生意想不到的结果(不会直接转化为 Django 的save() 操作)。
    猜你喜欢
    • 2019-07-15
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多