美好的一天,我有一个问题:我有一些带有某些领域的模型。
class Gallery(models.Model):
image = models.FileField(upload_to='gallery/')
status = models.BooleanField()
type = models.BooleanField()
我使用此模型在砖石网格中存储图库图像。这个网格是固定的,我需要得到12个随机图像,这很容易做到。
gallery = Gallery.objects.all().order_by('id','pk').order_by('?')[: 12];
但其中5个应该是True类型,还有7个其他 - 假。如果它能够在此查询集中自定义订单,我将非常高兴,例如,True表示水平图片(h),False表示垂直[v]。我想得到这样的订单[v,h,h,h,v,v,v,h,h,v,v,v]
答案 0 :(得分:1)
您可以执行两个查询,一个用于水平查询,另一个用于垂直对象。
<
然后从两个查询集
构建列表horizontal = Gallery.objects.filter(type=True).order_by('?')[:7]
vertical = Gallery.objects.filter(type=False).order_by('?')[:5]
请注意,order_by docs警告gallery = [verical[0]] + horizontal[0:3] + vertical[1:4] + horizontal[3:] + vertical[4:]
可能会很慢。如果遇到性能问题,您可能希望寻找替代方法。例如,请参阅this question。