Недавно я обновился с 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
.
Теперь, когда я обновился, прошел и нажал «опубликовать черновик» на всех своих страницах, на той же странице администратора отображаются две копии каждой страницы в поле выбора — одна опубликованная и одна черновая.
Некоторое дальнейшее расследование показало, что в определение тизерного плагина добавлено следующее: справиться с этим:
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
.)