3
我最近從Django的CMS 2.3.5升級到2.4.1。網頁上的Django-CMS外鍵顯示和公佈草案頁
以前我有像這樣的模型:
from django.db import models
from cms.models.pagemodel import Page
class MyModel(models.Model):
my_page = models.ForeignKey(Page)
在管理,這將很好地讓我選擇一個頁面與MyModel
關聯。
現在,我已經升級,並通過了與壓在我的所有網頁「發佈稿」,在同一個管理頁面顯示的選擇框的每個頁面的兩個副本 - 一個發佈和一個草案。
一些further investigation已發現了傳情插件已經在其定義下面加來處理這個:
page_link = models.ForeignKey(Page,
limit_choices_to={'publisher_is_draft': True},
...)
同樣,我曾經是能夠查找網頁網址在我的觀點像這樣:
Page.objects.get(reverse_id='update').get_absolute_url()
但現在我必須使用:
Page.objects.get(reverse_id='update', publisher_is_draft=False).get_absolute_url()
這看起來有點難看。
是在get
的limit_choices_to
和額外的字段現在有必要嗎?或者有更簡潔的方式只看到發佈的頁面? (例如,我注意到,其他CMS的插件,例如鏈接,圖片,使用外鍵沒有limit_choices_to
參數)。
非常有用 - T的漢克斯! –
另一個問題 - 你知道這是否處理多個站點對我來說,還是需要使用方法:'Page.objects.public()得到(reverse_id =「更新」,網站= get_current_site(要求))get_absolute_url( )'? –
正如我在代碼中看到的那樣,如果您在不同網站的不同頁面中使用相同的'reverse_id',則需要指定'site'。 也爲更多的細節,你可以看到'代碼{%page_id_url%}'模板標籤https://github.com/divio/django-cms/blob/develop/cms/templatetags/cms_tags.py#L111 –