假设我有一个模特:
class BlogPost(Page):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
body = StreamField([
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('gallery', CarouselBlock()),
('video', EmbedBlock()),
])
...
而且我想在侧栏中创建与此模型相关的多个页面。我尝试过这样的方法:
class BlogPostAdmin(ModelAdmin):
model = BlogPost
...
class DraftPostAdmin(ModelAdmin):
model = BlogPost
#query for drafts
...
class ScheduledPostAdmin(ModelAdmin):
model = BlogPost
#query for scheduled posts
...
class BlogGroup(ModelAdminGroup):
menu_label = 'Blog'
items = (BookAdmin, AuthorAdmin, GenreAdmin)
...
modeladmin_register(BlogGroup)
但是问题是所有页面都显示与第一个ModelAdmin的查询集匹配的模型实例。在Wagtail中实现多个菜单项以管理一个模型的不同方面的最佳方法是什么?
使用proxy model,然后为每个模型定义一个适当的manager。我在基于Wagtail的现有应用程序中进行此工作,在该应用程序中,我为成员资格应用程序中的各种成员资格状态定义了代理模型。在我的情况下,基本模型是Member
,但是我有CurrentMember
,NonCurrentMember
等。