我无法在Django中不应用排序就合并两个相同模型的query_set?

问题描述 投票:0回答:2

我当时在做一个项目,遇到一个问题。我需要一个query_set,它应该根据创建的日期进行排序,但是query_set中有一些项目需要始终放置在query_set的末尾。

我不需要为这些商品申请订购。这些项目应始终位于query_set的末尾

这是我的模特

class Bookings(model.Model):
    booking_title = models.CharField('Booking title', max_length=125, blank=True, null=True)
    user = models.ForeignKey(User, related_name='request_user', on_delete=models.CASCADE)
    practice = models.BooleanField(default=False)
    status = models.IntegerField(choices=[1, 2], default=1)
    created_date = models.DateTimeField(auto_now_add=True)

这是我的查询集

query_set = Bookings.objects.filter(status=1)

这是我的解决方案(哪个不起作用

query_set_practice = query_set.filter(practice=True)
query_set_normal = query_set.filter(practice=False).order_by('created_date')
query_set = query_set_normal | query_set_practice

我需要先进行常规预订,然后再进行练习预订。正常预订应按顺序进行(最后一个应该是第一)。

我需要一种优化的解决方案,而无需添加任何循环和创建多个query_set。

请帮助我。

django django-queryset
2个回答
0
投票

将此更改为:

query_set_normal = query_set.filter(practice=False).order_by('-created_date')

0
投票
query_set = query_set.order_by('practice', '-created_date)
© www.soinside.com 2019 - 2024. All rights reserved.