Rod*_*kar 2 django django-queryset
我在 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')
Run Code Online (Sandbox Code Playgroud)
我试图通过描述文本中出现的一段文本来过滤它,这很简单(过滤第一级对象,即用户),但随后我想过滤每个用户的报价并返回具有所需的用户优惠。我在尝试:
queryset.filter(offers__description__icontains = sometext)
Run Code Online (Sandbox Code Playgroud)
但我向用户提供了他拥有的所有优惠。
任何帮助,谢谢!
要使用自定义查询集限制相关优惠,您可以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)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |