Python 从多个模型检索所有相关对象时,如何限制查询数量?
假设我有这个模型:Python 从多个模型检索所有相关对象时,如何限制查询数量?,python,django,django-models,django-database,django-1.7,Python,Django,Django Models,Django Database,Django 1.7,假设我有这个模型: 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.0
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
但如果我只使用(伪代码):
然后在模板中循环,始终放置另一个循环:
{% 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_log_models”
我之所以使用外键关系,是因为数据来自一个多线程的服务器进程,并且在需要时输入“word”
那么有什么办法可以解决这个问题吗
另外:
我以前使用的另一种方法是只有一个模型,其中有一个单词字段和一个组id。这个单词字段只包含一个单词,每个单词都有一个条目。这会导致“日志内容”被复制,但我不认为这有什么大问题。一个巨大的问题是遍历所有这些日志,并根据组ID组合它们,然后再次根据时间对它们进行排序。最后,这会减少查询,但我必须对所有内容至少进行两次排序,这不是很快
{% for my_log in my_log_model_query %}
{% for more_log_model my_log.more_log_models %}
{{ more_log_model.word }}
{% endfor %}
{% endfor %}