【发布时间】:2013-05-21 19:23:40
【问题描述】:
我最近从 Django-CMS 2.3.5 升级到 2.4.1。
以前我有一个这样的模型:
from django.db import models
from cms.models.pagemodel import Page
class MyModel(models.Model):
my_page = models.ForeignKey(Page)
在管理员中,这将允许我选择一个与MyModel 关联的页面。
现在我已经升级,并且在所有页面上都按了“发布草稿”,同一个管理页面在其选择框中显示每个页面的两个副本 - 一个已发布,一个草稿。
一些further investigation 发现 Teaser 插件在其定义中添加了以下内容来处理此问题:
page_link = models.ForeignKey(Page,
limit_choices_to={'publisher_is_draft': True},
...)
同样,我曾经能够在我的视图中查找页面 URL,如下所示:
Page.objects.get(reverse_id='update').get_absolute_url()
但现在我必须使用:
Page.objects.get(reverse_id='update', publisher_is_draft=False).get_absolute_url()
这看起来有点难看。
现在需要limit_choices_to 和get 中的额外字段吗?还是有一种更简洁的方法来只查看已发布的页面? (例如,我注意到其他 cms 插件,例如链接、图片,使用没有 limit_choices_to 参数的外键。)
【问题讨论】:
标签: django django-cms