i尝试在django应用中显示上5个项目,以及在true上设置的is_home的项目。
请提示如果这是"不错的"和正确的方法:
我的模型:
class Event(models.Model):
title = models.CharField(max_length=500)
date = models.DateField()
is_home = models.BooleanField(default=False)
我查看的查询:
context['event_list'] = Event.objects.filter(Q(Event.objects.all()) | Event.objects.filter(is_home=True))[:5]
context['event_list'] = Event.objects.filter(is_home=True).order_by(-id)[:5]
简单使用:
list(Event.objects.all().order_by('-id')[:5]) + list(Event.objects.filter(is_home=True))
不幸的是,您不能(据我所知(在进行切片之后组合查询,因此需要转换为列表。
如果您真的想要拥有一个QuerySet
,您可以做:
Event.objects.filter(Q(id__in=Event.objects.all().order_by('-id')[:5].values_list('id', flat=True)) | Q(is_home=True))
非常丑陋。