如何为Wagtail TaggedItemBase标签类设置多个ParentalKeys

问题描述 投票:0回答:1

我有两种不同的页面模型(没有子类,单独的应用程序,只有相似的字段是通用的,例如“模型名称”,“ id”,“零件”),比如说汽车和摩托车。我正在制作一个单独的页面,其中包含它们的零件表(该零件表还需要包含“ id”(我认为可以是pk,“网上商店链接”和“ used by”之类的列),这些列将显示所有Bike和Car使用零件的模型);由于它们可以共享几个相同的部分,因此我希望它们连接到相同的Tag模型(而不是具有“ CarPageTag”和“ BikePageTag”);到目前为止我已经尝试过的内容:

  • 我试图为“零件”制作一个单独的应用程序。我想出了如何从其他应用程序中包含该类,并且由于以下错误,它可以与汽车或摩托车配合使用,但不能同时与两者兼容:

AssertionError:ParentalKey(['CarsBlogApp.CarDetailPage','BikesBlogApp.BikeDetailPage'])无效。第一个参数为ForeignKey必须是模型,模型名称或字符串'self'

  • 我有一个简单的解决方案,可以通过ManyToManyField在普通的Django应用中工作(但我需要在管理员中使用wagtail自动填充标签选择页面)
  • 我在django,wagtail和taggit文档中四处张望
  • 我浏览了所有youtube教程
python django wagtail wagtail-snippet
1个回答
0
投票

设置单独的CarPageTagBikePageTag模型您想要的解决方案(假设它们是TaggedItemBaseas per the pattern shown in the Wagtail documentation的子类)。

TaggedItemBase本身不是标签模型-它只是定义页面模型和标签模型之间的关系(在本例中为taggit.Tag,这是django-taggit库默认提供的标准标签模型)。因此,CarPageTag设置CarPagetaggit.Tag之间的关系,BikePageTag设置BikePagetaggit.Tag之间的关系-两者都使用相同的标签模型。

如果您did希望汽车和自行车维护自己独立的标签集,则需要使用其他模式-custom tag models

© www.soinside.com 2019 - 2024. All rights reserved.