Недавно я обновился от 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},
...)
Кроме того, я использовал, чтобы иметь возможность просмотра страниц 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
аргумента.)
Очень полезно - т мотки! –
Еще один вопрос: знаете ли вы, что для этого используется несколько сайтов, или мне нужно использовать: 'Page.objects.public(). Get (reverse_id = 'update', site = get_current_site (request)) get_absolute_url () '? –
Как я вижу в коде, вам нужно указать 'site', если вы используете один и тот же' reverse_id' для разных страниц на разных сайтах. Также для получения более подробной информации вы можете увидеть код шаблона '{% page_id_url%}' https://github.com/divio/django-cms/blob/develop/cms/templatetags/cms_tags.py#L111 –