2016-05-02 4 views
2

У меня есть проект django с приложениями 'news'. здесь модель:Плагин Django-cms для существующей модели

class News(models.Model): 
    title = CharField(max_length=255) 
    content = TextField() 

Как я могу добавить Джанго-CMS к этому проекту, чтобы иметь возможность изменять новости прямо в шаблоне? Я знаю, что мне нужен настраиваемый плагин на основе модели новостей, и здесь у меня есть два варианта: 1) Я могу описать все поля модели новостей в одном плагине, но тогда появится окно для редактирования всех полей в один раз.

плагин, который описывает все поля:

class NewsPlugin(CMSPlugin): 
    title = CharField(max_length=255) 
    content = TextField() 
    def __unicode__(self): 
     return self.title 

2) Вторая идея собирается писать плагины для каждого отдельного поля в «новостях» и объединить их в какой-то другой плагин, но я не знаю, как пойми.

отдельный плагин для заголовка новости:

class NewsTitle(CMSPlugin): 
    title = CharField(max_length=255) 

отдельные pluginn для новостного контента:

class NewsContent(CMSPlugin): 
    content = TextField() 

Любая идея?

ответ

1

Что вы, возможно, захотите рассмотреть, является альтернативой плагинам, которые, как мне кажется, очень хорошо работают с новостным приложением.

Вы можете изменить свое поле информационного наполнения на PlaceholderField, что позволит вам добавить плагин к новостному элементу, а также настроить конфигурацию заполнителя со всеми обычными параметрами, доступными для стандартных заполнителей шаблонов.

В моих новостях приложении У меня есть довольно типичная установка, а ListView, а затем DetailView, где вы можете переключить CMS в режиме редактирования & Редактирования плагин в пункте вашего пресса-х PlaceholderField.

Вы также можете использовать extend the toolbar, чтобы предлагать ссылки для добавления новых новостей в модальное диалоговое окно или список существующих новостей;

@toolbar_pool.register 
class LatestNewsToolbar(CMSToolbar): 

    def populate(self): 

     news_menu = self.toolbar.get_or_create_menu(
      NEWS_MENU_IDENTIFIER, NEWS_MENU_NAME 
     ) 
     position = news_menu.get_alphabetical_insert_position(
      _('Latest news'), 
      SubMenu 
     ) 

     menu = news_menu.get_or_create_menu(
      'latest_news_menu', 
      _('Latest News ...'), 
      position=position 
     ) 
     try: 
      menu.add_modal_item(
       _('Add News Item'), 
       url=admin_reverse('news_latestnews_add') 
      ) 
     except NoReverseMatch: 
      # not in urls 
      pass 
     try: 
      menu.add_modal_item(
       _('Existing News Items'), 
       url=admin_reverse('news_latestnews_changelist') 
      ) 
     except NoReverseMatch: 
      # not in urls 
      pass 

    def post_template_populate(self): 
     pass 

    def request_hook(self): 
     pass 

Если у вас есть игра с этим способом работы, я думаю, вы найдете его более подходящим & более мощным, чем плагинов :)

и проверка это видео на этой области CMS; https://www.youtube.com/watch?time_continue=2670&v=Dj8dhgmzlFM

0

Использования плагин для доставки новостных статей из вашего приложения в другое Джанго CMS содержание - не использовать плагин для создать содержания новостей.

См. Документацию по CMS django по адресу how to use placeholders in other applications.

Смежные вопросы