4
これは、テキストの上に表示されるアイコンのモデルで、名前とアイコンが表示されます。Wagtail、ChoiceBlockの選択肢を別のモデルから取り込むにはどうすればよいですか?
from django.db import models
from django.utils.translation import ugettext as _
from django.conf import settings
class SomeSortOfIcon(models.Model):
name = models.CharField(max_length=200,
verbose_name=_('Icon Name'),
help_text=_('This value will be shown to the user.'))
image = models.ForeignKey(
getattr(settings, 'WAGTAILIMAGES_IMAGE_MODEL', 'wagtailimages.Image'),
on_delete=models.PROTECT,
related_name='+',
verbose_name=_('Icon'),
)
def __str__(self):
return self.name
class Meta:
verbose_name = _('Icon')
verbose_name_plural = _('Icons')
これは、ページ上のストリームフィールドに追加されるブロックのコードです。
from django.db import models
from django import forms
from django.utils.translation import ugettext as _
from wagtail.wagtailcore import blocks
from xxx.models import SomeSortOfIcon
class SomeSortOfIconChooserBlock(blocks.ChoiceBlock):
## PROBLEM HERE, where do I get the choices from?
choices = tuple([(element.name, element.image) for element in SomeSortOfIcon.objects.all()])
target_model = SomeSortOfIcon
class SomeBox(blocks.StructBlock):
headline = blocks.TextBlock(required=True)
some_icon = SomeSortOfIconChooserBlock(label='Icon', required=True)
info_box_content = blocks.RichTextBlock(label='Content', required=True)
class Meta:
template = 'blocks/some_box.html'
icon = 'form'
label = _('Some Box')
だから、私はブロックがstreamfieldに、私はアイコンモデルから選択してドロップダウンメニューをしたいアイコンの追加入手できますか。名前を表示することになっています。名前を選択すると、htmlに名前で自動的に追加されます。
ドロップダウンメニューが表示されますが、空です。 choices属性を使用しようとしましたが、他のモデルに接続する方法がわかりません。
誰でもお手伝いできますか?大変感謝しています。