从民意调查应用程序创建插件

create plugin from polls application

我从 pip install -e git+http://git@github.com/divio/django-polls.git#egg=polls 安装了应用投票。应用程序已保存 /me/env/src/polls/。我 运行 服务器来自 /me/project/。我收到无法导入投票插件的错误消息。我如何定义投票应用程序使用自己的模型。

现在我想在我的模板中创建插件和占位符。

cms_plugins.py

    from cms.plugin_base import CMSPluginBase
    from cms.plugin_pool import plugin_pool
    from polls.models import PollPlugin as PollPluginModel
    from django.utils.translation import ugettext as _

    class PollPlugin(CMSPluginBase):
        model = PollPluginModel # <--not sure what to put here.
        name = _("Poll Plugin") # Name of the plugin
        render_template = "polls/plugin.html" # 

        def render(self, context, instance, placeholder):
            context.update({'instance':instance})
            return context

    plugin_pool.register_plugin(PollPlugin) # register the plugin

polls/models.py

class Poll(models.Model):
        question = models.CharField(max_length=200)

        def __unicode__(self):  # Python 3: def __str__(self):
            return self.question


class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __unicode__(self):  # Python 3: def __str__(self):
        return self.choice_text

首先您需要添加新应用。

定义 PollPluginModel 并 link 用 poll 定义它 polls/models 来自 django.db 导入模型 来自 cms.models 导入 CMSPlugin 来自 polls.models 导入民意调查

class PollPluginModel(CMSPlugin):
    poll = models.ForeignKey(Poll)

    def __unicode__(self):
        return self.poll.question

请检查http://docs.django-cms.org/en/release-3.4.x/introduction/plugins.html。这里是插件的完整教程。