Das ist meine Modelle bezogen werden:DjangoRestFramework Serializer Filter und Limit
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
So ist der Deal - ich brauche Produkte mit ganz bestimmten Art und Weise zu suchen. Es sollte wie folgt aussieht: /Sortiment/Suche/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,
}
Das Problem ist also - wenn ich wie
suchenCafe.objects.filter(assortment__product__name='cola')
Es funktioniert, es zeigt alle Cafes, wo Produkt mit Name ‚Cola‘ existiert, aber Problem ist DJF Serializer
class CafeSerialzier:
assortments = AssortmentSerializer(source='assortment_set')
search_count = IntegerField(source='assortment_set.count')
Sortimente und search_count zeigt alle Sortiment und Zählung davon, und berücksichtigt nicht suchen Argumente, was erwartet wird. Die Frage ist also - wie man Suchparameter an source = 'sortiment_set' weiterleitet (auch ich muss die Ergebnisse auf 3 beschränken) und wie man alle Suchergebnisse zählt. Ich habe versucht SerializerMethodField für Assrotments, es löst einen Teil meiner Probleme, aber es verursacht eine Menge von Abfragen. Override von get_field
Methode hat die gleichen Probleme. Gibt es also eine Möglichkeit, Abfragefeld in ModelSerializer zu filtern und zu begrenzen und die Anzahl der unbegrenzten, aber gefilterten Abfragegruppen desselben Feldes zu erhalten?
Können Sie auch die Ansicht bereitstellen, in der Sie filtern? –
Sicher, Blick 'Klasse CafeAssortmentSearch (generics.ListAPIView): search_fields = ('assortment__product__name', 'assortment__product__category__name')' –
und Serializer: 'Klasse CafeAssortmentSearchSerializer (serializers.ModelSerializer): "" "Suche Serializer für Sortiment Modell."“ " assortment_count = serializers.IntegerField (source = 'assortment_set.count') Sortimente = AssortmentListSerializer (source = 'assortment_set', viele = True) Klasse Meta: """ Meta-Klasse ""“ Modell. = models.Institution fields = ('id', 'name', 'assortments', 'sortiment_count') ' –