2017-04-26 42 views
0

我正在構建一個FAQ插件,它將在我的Django CMS站點上顯示問題和解答的列表。我有以下型號:Django CMS獲取admin中定義的所有模型

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 %} 

回答

1

我的建議是,寫一個視圖,併爲模型創建對象,並呈現模板html。

例如:

from models import Faq 
def faq_view(request): 
    faqs = Faq.objects.all() 

    return render_to_response('faq.html', {'faqs': faqs}) 

然後,在for循環和顯示像下面的faq.html寫入一個。

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

我希望這會幫助你。

相關問題