如何从djangocms-blog的Post对象中获取文章扩展字段?
获取djangocms-blog文章扩展字段的方法
djangocms-blog官方推荐通过继承AbstractPostExtension实现文章扩展,获取扩展字段主要有两种实用方式:
方式一:直接通过反向关联获取
如果你的扩展模型(比如MyPostExtension)是基于AbstractPostExtension创建并注册的,Post对象会自动生成一个小写模型名的反向关联属性,直接访问即可:
$ python3 manage.py shell >>> from djangocms_blog.models import Post >>> from yourapp.models import MyPostExtension # 导入你的扩展模型 >>> post = Post.objects.first() >>> # 替换成你的扩展字段名 >>> post.mypostextension.custom_field
方式二:使用get_extension方法(更稳妥)
这种方式可以避免扩展实例不存在时抛出异常,适合做安全判断:
$ python3 manage.py shell >>> from djangocms_blog.models import Post >>> from yourapp.models import MyPostExtension >>> post = Post.objects.first() >>> # 获取扩展实例,不存在则返回None >>> extension = post.get_extension(MyPostExtension) >>> if extension: ... print(extension.custom_field) # 访问目标字段
注意事项
- 确保你的扩展模型已经通过
register_extension()方法完成注册 - 如果是直接修改
Post模型添加字段(不推荐官方扩展方式),可以直接通过post.你的字段名访问
内容的提问来源于stack exchange,提问作者sodimel
相关产品推荐
相关产品推荐

