我在Django中有一个查询集:
models.User:
id = pk
username = text
models.Offer
id = pk
user = Fk(User)
description = text
my serializer is:
class UserOfferSerializer(ModelSerializer):
offers = OfferSerializerAll(many=True, read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'offers')
我试图通过描述文本中出现的一段文字来过滤它,它很简单(过滤第一级对象,用户),但后来我想过滤每个用户的优惠并取回用户与想要的优惠。 我在尝试:
queryset.filter(offers__description__icontains = sometext)
但是我得到了用户提供的所有优惠。
任何帮助,谢谢!!
答案 0 :(得分:1)
要使用自定义查询集限制相关商品,您可以将prefetch_related
与Prefetch
对象一起使用:
from django.db.models import Prefetch
User.objects.filter(offers__description__icontains=sometext).prefetch_related(Prefetch('offers', queryset=Offer.objects.filter(description__icontains=sometext)))