class Box(models.Model):
length = models.IntegerField(null=False)
width = models.IntegerField(null=False)
height = models.IntegerField(null=False)
class BoxColorHistory(models.Model):
box = models.ForeignKey(Box, related_name='color_history')
start_datetime = models.DateTimeField(null=False)
end_datetime = models.DateTimeField(null=True)
color = models.CharField(max_length=20)
我想编写一个返回所有当前color ='green'的Box的查询。
问题是颜色在不断变化。每次颜色改变时,都会记录在BoxColorHistory表中。
框的当前颜色是BoxColorHistory表中的行,其中最近的开始时间和结束时间为空。
答案 0 :(得分:1)
current_green_histories = BoxColorHistory.objects.filter(
end_datetime__isnull=True,
color='green'
)
Box.objects.filter(color_history__id__in=current_green_histories.values('id'))
答案 1 :(得分:0)
尝试:
Box.objects.filter(color_history__color='green')