我尝试在django app中显示,查看最后5项以及is_home设置为True的项目。
请提示这是否“好”且正确:
我的模特:
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]
答案 0 :(得分:2)
context['event_list'] = Event.objects.filter(is_home=True).order_by(-id)[:5]
答案 1 :(得分:1)
只需使用:
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))
这非常难看。