我有一个正在工作的流场,并且有数据,我为此编写的代码看起来像:
class NewYearBlock(blocks.StructBlock):
year = blocks.IntegerBlock(verbose_name="Year (the year this data is rolling into)")
holidayRollover = blocks.FloatBlock(verbose_name="How many hours are rolling over")
overtimeRollover = blocks.FloatBlock(verbose_name="How many hours are rolling over")
class Meta:
icon = 'user'
和
newyearStream = StreamField([
('newyear', NewYearBlock()),
], blank=True)
我想做的是通过一些代码将一个项目附加到这个流域,我知道如何用下面的代码替换这个项目(有效)
employeeModel.newyearStream = newyearStream
employeeModel.save()
但这取代了已经存在的东西。
然后我想我可以遍历现有的流,然后创建一个新的对象来保存,但是当我尝试这样做时,我收到了
TypeError: cannot unpack non-iterable StreamChild object
所以我查看了类型,看到它是<class 'wagtail.core.blocks.stream_block.StreamValue'>
任何人都可以帮助我指明正确的方向,要么循环遍历流并得出我的结果,要么以更好的方式附加到我的 streamField。
感谢您的帮助, 丹
来自文档:“StreamField 的值表现为列表,在将实例保存回数据库之前可以插入、覆盖和删除块。可以将新项目作为元组写入列表(block_type ,价值)。”
# Append a rich text block to the stream
from wagtail.rich_text import RichText
my_page.body.append(('paragraph', RichText("<p>And they all lived happily ever after.</p>")))
# Save the updated data back to the database
my_page.save()