2016-05-05 18 views

risposta

7

, si può sicuramente aggiungere uno Streamfield ad un frammento. Funziona come se lo si usasse su una sottoclasse di Wagtail Page. Ecco un esempio del suo utilizzo:

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')] 

materiale extra che non hai chiesto: Streamfield è un campo modello di Django, quindi funziona lo stesso su qualsiasi modello si definisce su. In realtà, Streamfield salva solo come una stringa JSON. L'unica cosa che lo rende diverso sono i blocchi. I blocchi definiti in quel primo parametro di Streamfield stanno in realtà solo definendo le opzioni disponibili che Streamfield può utilizzare per generare contenuti. I blocchi stessi non hanno alcun rapporto con SQL per le operazioni CRUD, vengono utilizzati solo per manipolare i dati salvati per lo Streamfield.

Spero che questo aiuti.

+0

Impressionante, grazie KS per la risposta. Ora che so che è accettabile, (quando sono di nuovo davanti a un computer) pubblicherò il mio codice che non è lontano dal tuo. Genera la fine della barra nera, ma c'è un errore JS quando si fa clic su un blocco. Forse qualcuno può aiutarti. È una bella installazione di vaniglia, e funzionano bene in altri posti quindi è un po 'sconcertante. –