查询草稿或实时对象的 CMSPlugin 模型

Query CMSPlugin model for draft or live objects

我有一个 CMSPlugin 和一个在另一个应用程序中显示它的项目的请求。

显然,对于您创建的每个插件,都有一个实时版本和草稿版本,因此 audio = Audio.objects.all() 会给您带来重复的实例。

您将如何创建一个仅 returns 来自 public 个页面的插件对象的查询?

我的插件;

class Audio(CMSPlugin):
    """
    Model for storing audio clips.
    """
    caption = models.CharField(
        _("Title"),
        max_length=255,
        blank=True
    )
    audio_track = models.FileField()
    description = models.CharField(
        _("Description"),
        max_length=255,
        blank=True,
        null=True
    )

这样的事情怎么样:

Audio.objects.filter(placeholder__page__publisher_is_draft=False)

这假定所有 Audio 插件都属于 CMS 页面。 CMSPlugins 不能保证有一个页面与之关联!除非你将 page_only 选项设置为 True:

page_only = True

文档:http://django-cms.readthedocs.org/en/latest/reference/plugins.html#page-only