那是我的模型:
class Org:
name = CharField()
owner = ForeignKey(User)
class Cafe:
name = CharField()
org = ForeignKey(Org)
class Product:
name = CharField()
class Assortment:
cafe = ForeignKey(Cafe)
product = ForeignKey(Product)
price = IntegerField
所以交易是 - 我需要以非常具体的方式搜索产品。它应该看起来像这样:/assortment/search/?searh=cola
'cafe':{
'id:1,
'name': 'Foo',
'assortment': [
{
'product': {
'id': 1,
'name': 'Cola'
},
'price': 100
},
{
'product': {
'id': 2,
'name': 'Coca-cola'
},
'price': 200,
}
],
'search_count': 5,
},
'cafe': {
'id':2,
'name': 'Bar',
'assortment': [
{
'product': {
'id': 3,
'name': 'Sprite-cola',
},
'price': 150,
},
]
'search_count': 1,
}
所以问题是 - 当我搜索时
Cafe.objects.filter(assortment__product__name='cola')
它有效,它显示了所有存在名为“可乐”的产品的咖啡馆,但问题是 DJF 序列化程序
class CafeSerialzier:
assortments = AssortmentSerializer(source='assortment_set')
search_count = IntegerField(source='assortment_set.count')
assortments 和 search_count 显示它的所有分类和计数,并且不考虑搜索参数,这是预期的。所以问题是 - 如何将搜索参数传递给 source='assortment_set' (我还需要将结果限制为 3)以及如何计算所有搜索结果。我已经为 assrotments 尝试过 SerializerMethodField,它解决了我的部分问题,但它会引起很多查询。方法的覆盖get_field
也有同样的问题。那么有没有健全的方法来过滤和限制 ModelSerializer 中的查询集相关字段并获取同一字段的无限但过滤的查询集的计数?