Wagtail サイトで構造化スニペットを作成しようとしています。私はドキュメンテーションに目を通しましたが、この点については何も見ませんでした (見逃していたらすみません)。
StreamField
スニペット内で使用することはできますか? または、ページのみ
Wagtail サイトで構造化スニペットを作成しようとしています。私はドキュメンテーションに目を通しましたが、この点については何も見ませんでした (見逃していたらすみません)。
StreamField
スニペット内で使用することはできますか? または、ページのみ
はい、間違いなく Streamfield をスニペットに追加できます。Wagtail Page サブクラスで使用する場合と同じように機能します。使用例を次に示します。
from wagtail.core.fields import StreamField
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 用に保存されたデータを操作するためにのみ使用されます。
それが役立つことを願っています。