2016-05-05 39 views

回答

7

是的,你可以肯定地添加一個Streamfield到一個片段。它的工作方式與在W Page頁面子類中使用它相同。下面是一個例子的它的使用:

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

額外的東西,你沒有問: Streamfield是一個Django模型字段,所以它可以在你定義它的任何模型一樣。實際上,Streamfield只是保存爲JSON字符串。唯一讓它不同的是塊。在Streamfield的第一個參數中定義的塊實際上只是定義了Streamfield可用於生成內容的可用選項。塊本身對CRUD操作的SQL沒有影響,它們僅用於操縱爲Streamfield保存的數據。

希望有所幫助。

+0

太棒了,謝謝KS的答案。現在,我知道這是可以接受的,(當我回到電腦前時),我會發布我的代碼,與您的代碼相距不遠。它會生成黑色條,但單擊塊時會出現JS錯誤。也許有人可以幫忙。這是一個非常漂亮的香草裝置,在其他地方它們工作得很好,所以這有點令人費解。 –