【问题标题】:Django CMS get all models defined in the adminDjango CMS 获取管理中定义的所有模型
【发布时间】:2017-04-26 01:50:19
【问题描述】:

我正在构建一个常见问题解答插件,它将在我的 Django CMS 站点上显示问题和答案列表。我有以下型号:

class Faq(models.Model):

    question = models.CharField(
        'question',
        blank=False,
        default="",
        help_text=u'Please type in the question',
        max_length=256,
    )

    answer = HTMLField(configuration='CKEDITOR_SETTINGS_BASIC',
                      null=True,
                      help_text=u'Please provide an answer. if you paste HTML make sure to cmd+shift+v for plain paste')

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

我在管理员中定义的:

class FaqAdmin(admin.ModelAdmin):
    model = Faq
    extra = 3

admin.site.register(Faq, FaqAdmin)

我添加了一些实例作为内容。

目前在插件中定义了 10 个问题:

class FaqPluginModel(CMSPlugin):
    faq1 = models.ForeignKey(Faq, related_name='faq1+')
    faq2 = models.ForeignKey(Faq, related_name='faq2+')
    faq3 = models.ForeignKey(Faq, related_name='faq3+')
    faq4 = models.ForeignKey(Faq, related_name='faq4+')
    faq5 = models.ForeignKey(Faq, related_name='faq5+')
    faq6 = models.ForeignKey(Faq, related_name='faq6+')
    faq7 = models.ForeignKey(Faq, related_name='faq7+')
    faq8 = models.ForeignKey(Faq, related_name='faq8+')
    faq9 = models.ForeignKey(Faq, related_name='faq9+')
    faq10 = models.ForeignKey(Faq, related_name='faq10+')

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

但是,这种方法不可扩展。我正在寻找一种方法来从管理员那里获取所有模型并将它们呈现在模板的 html 中。大致如下:

<div class="col-xs-12 col-sm-6">
            <div class="box">
           --->>  {% for every faq model render this: %} <<--
                <div class="question">
                    <div class="question-title">
                        What are your supported platforms?
                    </div>
                    <div class="question-arrow">
                    </div>
                </div>
{% endfor %}

【问题讨论】:

    标签: django django-cms


    【解决方案1】:

    我的建议是,编写一个视图并为模型创建对象并渲染到模板 html。

    例如:

    from models import Faq
    def faq_view(request):
        faqs = Faq.objects.all()
    
        return render_to_response('faq.html', {'faqs': faqs})
    

    然后在 faq.html 中编写一个 for 循环并显示如下。

    <ul>
    {% for faq in faqs %}
        <li><strong>{{faq.question}}</strong></li>
        <li>{{faq.answer}}</li>
    {% endfor %}
     </ul>
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多