2016-05-05 10 views

Antwort

7

Ja, Sie können definitiv ein Streamfield zu einem Schnipsel hinzufügen. Es funktioniert genauso, als ob Sie es in einer Wagtail Page-Unterklasse verwenden würden. Hier ist ein Beispiel davon Gebrauch ist:

from wagtail.wagtailsnippets.models import register_snippet 
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel 

@register_snippet 
class Contact(models.Model): 
    contact_info = StreamField([ 
     ('email', MyBlocks.ContactEmail()), 
     ('phone', MyBlocks.ContactPhone()), 
     ('address', MyBlocks.ContactAddress()), 
    ]) 

    panels = [StreamFieldPanel('contact_info')] 

Extra-Sachen haben Sie nicht fragen Sie nach: Streamfield ist ein Django Modellfeld, so dass es das gleiche auf jedem Modell funktioniert, wie Sie es definieren, auf. Tatsächlich speichert das Streamfield nur als JSON-String. Das einzige, was es anders macht, sind die Blöcke. Blöcke, die in diesem ersten Parameter des Streamfield definiert sind, definieren nur die verfügbaren Optionen, die der Streamfield zum Generieren von Inhalt verwenden kann. Die Blöcke selbst haben keinen Einfluss auf die SQL für CRUD-Operationen, sie werden nur zum Manipulieren der für das Streamfield gespeicherten Daten verwendet.

Hoffnung, das hilft.

+0

Super, danke KS für die Antwort. Jetzt, wo ich weiß, dass es akzeptabel ist (wenn ich wieder vor einem Computer bin), werde ich meinen Code posten, der nicht weit von deinem entfernt ist. Es erzeugt die schwarze Balken-Feineinstellung, aber es gibt einen JS-Fehler, wenn Sie auf einen Block klicken. Vielleicht kann jemand helfen. Es ist eine hübsche Vanille-Installation, und sie funktionieren gut in anderen Orten, so dass es ein bisschen rätselhaft ist. –

Verwandte Themen