gpt4 book ai didi

python - Django 查询集的自定义过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:44 24 4
gpt4 key购买 nike

美好的一天,我有一个问题:我有一个包含一些字段的模型。

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 个应该是 False。如果它能够在此查询集中自定义顺序,我将非常高兴,例如,True 表示水平图片 (h),False - 垂直 [v]。我想得到这样的订单 [v,h,h,h,v,v,v,h,h,v,v,v]

最佳答案

您可以执行两个查询,一个用于水平对象,一个用于垂直对象。

horizontal = Gallery.objects.filter(type=True).order_by('?')[:7]
vertical = Gallery.objects.filter(type=False).order_by('?')[:5]

然后从你的两个查询集构建列表

gallery = [verical[0]] + horizontal[0:3] + vertical[1:4] + horizontal[3:] + vertical[4:]

请注意 order_by docs警告 order_by('?') 可能很慢。如果遇到性能问题,您可能需要寻找替代方法。参见 this question例如。

关于python - Django 查询集的自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com