让我们说,我的Django应用程序中有以下模型。
class EventGroup
name = models.CharField()
class Event(models.Model):
name = models.CharField()
group = models.ForeignKey(EventGroup)
class Severity(models.Model):
name = models.CharField()
group = models.ForeignKey(EventGroup)
class LogEntry(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
event = models.ForeignKey('Event')
severity = models.ForeignKey('Severity')
查找组中每个事件的每个严重性的最新日志条目的最佳方法是什么?也就是说,如果我有一个具有一些严重性的事件组和一些与之相关的事件,我希望得到每个严重性和事件组合的最新日志条目列表。
答案 0 :(得分:0)
最直接的方式是:
groups = EventGroup.objects.all()
for group in groups:
for event in group.event_set.all():
LogEntry.objects.filter(event = event).latest('timestamp')
这将多次击中数据库。
另一种方法是从LogEntry
模型开始。这种方法需要较少的查询。
groups = EventGroup.objects.all()
for group in groups:
LogEntry.objects.select_related().filter(event__group = group).latest('timestamp')
警告:我没有测试过这段代码。这对我有用。