如何分发过滤结果? (Django的)

时间:2017-08-25 08:44:42

标签: django django-models django-views django-queryset

我想为每个parent_types检索5件衣服(“top”,“bottom”,“shoes”)

user.clothes_set.filter(type="top")[:5]
user.clothes_set.filter(type="bottom")[:5]
user.clothes_set.filter(type="shoes")[:5]

我想以更高效的方式做到这一点。 (三个过滤器很讨厌!)

top, bottom, shoes = user.clothes_set.filter(~~~) <- retrieve `5 items each`

这里有布料模型

class Clothes(models.Model):
    id
    type =      # top, bottom and shoes 
    owner = ForeignField  # some one who post

我应该重新设计模型吗?我应该将'type'字段排除在类之外吗?还是不可能?

1 个答案:

答案 0 :(得分:1)

这样的东西?

user.clothes_set.filter(type__in=['top', 'bottom', 'shoes'])[:5]

更新:如下评论;

offset = lambda t: user.clothes_set.filter(type=t)[:5]
top, bottom, shoes = offset('top'), offset('bottom'), offset('shoes')