Python Wagtail:多ParentalKey字段的问题
我有两个Wagtail模型,它们通过ParentalKey字段相互关联。我注意到,在尝试发布对父模型中的条目的更改时,这似乎会导致问题 My models.py的外观如下所示:Python Wagtail:多ParentalKey字段的问题,python,django,wagtail,wagtail-admin,Python,Django,Wagtail,Wagtail Admin,我有两个Wagtail模型,它们通过ParentalKey字段相互关联。我注意到,在尝试发布对父模型中的条目的更改时,这似乎会导致问题 My models.py的外观如下所示: class Person(Page): (field definitions here) class ResearchTask(Page): task_contact = ParentalKey(Person, null=True, blank=True, on_delete=models.SET_NULL,
class Person(Page):
(field definitions here)
class ResearchTask(Page):
task_contact = ParentalKey(Person, null=True, blank=True, on_delete=models.SET_NULL, related_name='person_task_contact_list')
task_manager = ParentalKey(Person, null=True, blank=True, on_delete=models.SET_NULL, related_name='person_task_manager_list')
(other field definitions here)
当我编辑一个ResearchTask并将一个人指定为task_manager,然后编辑此人时,即使我不做任何更改,只需单击“发布”,也会出现如下错误:
ValidationError at /admin/pages/2172/edit/
{'live_revision': ['page revision instance with id 369 does not exist.']}
奇怪的是,此修订id引用了一条确实存在的记录,并且实际上是Research任务的已发布修订
更奇怪的是,这两个字段中的第一个,task_contact,我从来没有遇到过这个问题。似乎只有任务管理器会导致修订错误。我可以将同一个人同时指定为task_联系人和task_manager,并且只会在manager字段中遇到问题,如果我通过从models.py中删除task_manager字段并进行/运行迁移而将其从数据库中完全删除,则在只有task_联系人字段存在的情况下,我无法再现错误。这两个领域有着几乎相同的行为,所以这让我相信,让两个Parentalkey将相同的两个模型连接在一起是有问题的
在MySQL数据库中,我注意到我正在编辑的人的最新版本(Wagtail管理员显然可以将其保存为草稿,但在尝试发布时遇到错误)包含一堆嵌套的JSON,用于task_manager字段,但不用于task_联系人。例如:
{
"pk": 2172,
"path": "00010001000100020007",
"depth": 5,
"numchild": 0,
"title": "ExampleGuy LastName",
(other person fields here)
"person_task_contact_list": [],
"person_tasks_managed_list": [{
"pk": 335,
"path": "0001000100020003004I",
"depth": 5,
"numchild": 0,
"title": "Example Task Name",
(other task fields here)
}]
}
知道Wagtail为什么坚持以这种方式为一个ParentalKey字段而不是另一个字段存储JSON吗?在建立模型之间的关系方面,如果有其他字段类型更适合我的需要,我是不是完全找错了方向