【问题标题】:Django-cms and autoblocksDjango-cms 和自动阻塞
【发布时间】:2023-03-23 17:03:01
【问题描述】:

我正在处理在线商店项目。在产品模型中,我有描述字段,但它是空的。不知何故,描述数据存储在 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。但我在代码中找不到该描述。

标签: django django-cms


【解决方案1】:

您的描述在Autoblock.content 中,它是ForeignKey'cms.Placeholder',而'cms.CMSPlugin' 模型树又包含在cmsplugin_set 中。

目前没有直接的方法可以将Placeholder 转换为(HTML)字符串,以便在请求/响应周期之外的其他地方使用。

最好的办法是调用 Placeholder.render 并使用包含(假)Django Request 对象的上下文对象。这将返回呈现的内容,然后您可以将其存储在description

【讨论】:

  • 谢谢,帮了大忙。 :)
猜你喜欢
  • 2016-07-06
  • 1970-01-01
  • 2014-02-17
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
相关资源
最近更新 更多