Django-cms 和自动阻塞
Posted
技术标签:
【中文标题】Django-cms 和自动阻塞【英文标题】:Django-cms and autoblocks 【发布时间】:2016-05-16 08:02:21 【问题描述】:我正在处理在线商店项目。在产品模型中,我有描述字段,但它是空的。不知何故,描述数据存储在 django-cms 和 autoblocks 中。从页面中,我可以使用 django-cms 编辑该描述。在模板标签% autoblock product.slug %
行是描述。
在 views.py 中,我将“产品”作为上下文传递,但它的 slug 字段与描述无关。另外,如果我写 product.slug
,它会给我带来麻烦。
还用谷歌搜索了 Autoblocks,但最终发现是这个模型:
class Autoblock(models.Model):
composite_id = models.CharField(max_length=150)
content = PlaceholderField('content')
site = models.ForeignKey(Site)
def __unicode__(self):
return self.composite_id
所有这些字段都与描述无关。
我苦苦挣扎了很长时间才能找到该描述的位置。任何提示将不胜感激。
已编辑:
产品型号:
class HBaseProduct(Product):
def __init__(self, *args, **kwargs):
super(HBaseProduct, self).__init__(*args, **kwargs)
image = models.ImageField(upload_to='images/', blank=True, max_length=300, verbose_name=_('Image'))
position = models.IntegerField(default=0, null=False)
description = models.TextField(null=True, blank=True)
【问题讨论】:
可以分享一下产品型号吗? 已添加。但是模型与自动块中的描述无关 product.description
应该给你产品描述
是的,如果有的话。它现在是空的,我需要将描述从 autoblocks 迁移到 product.description
。但我在代码中找不到该描述。
【参考方案1】:
您的描述在Autoblock.content
中,它是ForeignKey
到'cms.Placeholder'
,而'cms.CMSPlugin'
模型树又包含在cmsplugin_set
中。
目前没有直接的方法可以将Placeholder
转换为(html)字符串,以便在请求/响应周期之外的其他地方使用。
最好的办法是调用 Placeholder.render
并使用包含(假)Django Request
对象的上下文对象。这将返回呈现的内容,然后您可以将其存储在description
。
【讨论】:
谢谢,帮了大忙。 :)以上是关于Django-cms 和自动阻塞的主要内容,如果未能解决你的问题,请参考以下文章
翻译 | 关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案