假设我有这个模型:
class MyLogModel(models.Model):
log_stuff = models.CharField(max_length)
class MoreLogModel(models.Model):
word = models.CharField(max_length)
my_log_model = models.ForeignKey(MyLogModel, related_name="more_log_models")
现在想象一下有1.000.000.000个MyLogModel和10倍以上的LogModel与它们相关
在我看来,我想向用户展示最新的100个MyLogModel以及MoreLogModel中与它们相关的所有“word”字段。平均每个MyLogModel应该有10个以上的logmodel
但如果我只使用(伪代码):
my_log_model_query = MyLogModel.objects.get_latest_100
然后在模板中循环,始终放置另一个循环:
{% for my_log in my_log_model_query %}
{% for more_log_model my_log.more_log_models %}
{{ more_log_model.word }}
{% endfor %}
{% endfor %}
这将导致大量的数据库查询,对吗
所以我想知道的是,是否有可能查询所有MyLogModel,并且相关的“more\u log\u models”已经在该模型所附的列表中
我之所以使用外键关系,是因为数据来自一个多线程的服务器进程,它可以随时输入“word”
有什么办法可以解决这个问题吗
另外: 我以前使用的另一种方法是只有一个模型,其中有一个单词域和一个组id。然后这个单词域只包含一个单词,每个单词都有一个条目。这会导致“日志内容”被复制,但我不认为这有什么大问题。一个巨大的问题是遍历所有这些日志,并根据组ID将它们组合起来,然后再次根据时间对它们进行排序。最终这会减少查询,但我必须对所有内容至少排序两次,这不是很快
目前没有回答
相关问题 更多 >
编程相关推荐