5

Wagtailサイトでいくつかの構造化スニペットを作成しようとしています。私はdocumentationを見ましたが、この時点では何も見ませんでした(私がそれを逃した場合は私を許してください)。WagtailのスニペットでのStreamFieldの使用

StreamFieldをスニペットに含めることはできますか?または、唯一のページ

答えて

7

はいに、あなたは間違いなくスニペットにStreamfieldを追加することができます。これは、Wagtail Pageサブクラスで使用する場合と同じように機能します。ここでの使用の例です: StreamfieldはDjangoのモデルフィールドで、それはあなたがそれを定義するすべてのモデルで同じように動作しますので:あなたが要求していない

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はJSON文字列として保存します。それを変える唯一のものはブロックです。 Streamfieldの最初のパラメータで定義されたブロックは、Streamfieldがコンテンツを生成するために使用できるオプションを実際に定義するだけです。ブロック自体はCRUD操作のSQLには関係なく、Streamfield用に保存されたデータを操作するためにのみ使用されます。

希望に役立ちます。

+0

恐ろしい、答えのKSに感謝します。私はそれが受け入れられることを知ったので、(私はコンピュータの前に戻っている)私はあなたから離れていない私のコードを投稿します。それは黒いバーを生成しますが、ブロックをクリックするとJSエラーが発生します。たぶん誰かが助けることができます。それはかなりバニラのインストールで、他の場所でもうまく動作するので少し困惑します。 –

関連する問題