Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Wagtail:多ParentalKey字段的问题_Python_Django_Wagtail_Wagtail Admin - Fatal编程技术网

Python Wagtail:多ParentalKey字段的问题

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,

我有两个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, 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吗?在建立模型之间的关系方面,如果有其他字段类型更适合我的需要,我是不是完全找错了方向