2017-04-26 3 views
0

Ich baue ein FAQ-Plugin, das eine Liste von Fragen und Antworten auf meiner Django CMS-Seite anzeigen wird. Ich habe folgendes Modell:Django CMS alle Modelle im Admin definiert

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 

Was ich im Admin definiert:

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

admin.site.register(Faq, FaqAdmin) 

Und ich habe ein paar Instanzen als Inhalte hinzugefügt.

Vorerst im Plugin definiert 10 Fragen:

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 

jedoch dieser Ansatz nicht skalierbar ist. Ich suche nach einer Möglichkeit, alle Modelle vom Admin zu holen und sie im HTML der Schablone darzustellen. Etwas in der Form von:

Antwort

1

Mein Vorschlag ist, eine Ansicht schreiben und erstellen Sie ein Objekt für das Modell und Render to HTML-Vorlage.

Zum Beispiel:

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

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

dann in faq.html Schreib eine for-Schleife und Anzeige wie unten.

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

Ich hoffe, das wird Ihnen helfen.

Verwandte Themen