【发布时间】:2016-10-01 01:45:56
【问题描述】:
我有一个非常复杂的模型,有很多 FK 和 M2M 的相关模型,它们也有很多关系,等等。
因此,呈现此类对象的列表是一项非常昂贵的 SQL 操作,我想对其进行优化。 (select_related 和 prefetch_related 帮助,不过一点)
我可能有一个非常愚蠢但非常简单的想法 - 定义保存方法,它将所有对象的数据序列化到存储 JSON 的字段中
要做这样的事情:
class VeryComplexModel(models.Model):
# some_field
# some_field
# ...
json = models.TextField()
def save(self):
json = serialize(self)
在views.py中:
complexModels = ComplexModel.objects.get_values(json)
在模板中:
{% for m in complexModels %}
{{ m.some_field }}
{{ m.some_field.some_fields.some_field }}
{% endif %}
这是个坏主意吗?也许总的来说这是一个好主意,但我应该使用更合适的东西,比如特殊的 JSON 字段或其他东西?
非常感谢您的建议!
【问题讨论】:
标签: django postgresql query-optimization