如果不在 Django 中应用排序,我无法组合相同模型的 2 query_set?
I was unable to combine 2 query_set of same model without apply ordering in Django?
我在做一个项目时遇到了一个问题。我需要一个 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
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 创建的优化解决方案。
请帮帮我
将其更改为:
query_set_normal = query_set.filter(practice=False).order_by('-created_date')
query_set = query_set.order_by('practice', '-created_date)
我在做一个项目时遇到了一个问题。我需要一个 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
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 创建的优化解决方案。
请帮帮我
将其更改为:
query_set_normal = query_set.filter(practice=False).order_by('-created_date')
query_set = query_set.order_by('practice', '-created_date)