Mein Modell erweitern sieht wie folgt aus:Wie Modell auf Serializer Ebene mit django-Rest-Rahmen
class MenuItem(models.Model):
name = models.CharField(max_length=500)
components = models.ManyToManyField(Component, through=MenuItemComponent)
class Component(models.Model):
name = models.CharField(max_length=500)
class MenuItemComponent(models.Model):
menuItem = models.ForeignKey('MenuItem')
component = models.ForeignKey(Component)
isReplaceable = models.BooleanField()
Was ich zu tun ist, möchte eine Liste von Komponenten (nicht MenuItemComponents) in bestimmten MenuItem, dass er würde das isReplaceable-Feld enthalten. Bisher habe ich:
#views.py
class MenuItemComponentList(generics.ListAPIView):
"""
Displays components for given MenuItem
"""
model = MenuItemComponent
serializer_class = MenuItemComponentSerializer
def get_queryset(self):
itemId = self.kwargs['itemId']
return MenuItemComponent.objects.filter(menuItem__pk=itemId)
#serializers.py
class MenuItemComponentSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MenuItemComponent
, die eine Liste von MenuItemComponents und zwingt Clients zur Verfügung stellt, um mehrere Anrufe zu machen, um alle Komponenten abzurufen. Wenn Sie die Komponentenliste mit zusätzlichen Daten aus dem Feld isReplaceable öffnen, wird das Problem gelöst.
EDIT
Am Ende wird Ich möchte eine Liste erhalten, die Komponentenelemente, sondern die Elemente listet exteded mit isReplaceable Feld von MenuItemComponent Modell:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/api/component/1/",
"name": "component 1",
"isReplaceable": true
},
{
"url": "http://localhost:8000/api/component/2/",
"name": "component 2",
"isReplaceable": false
}
]
}
Können Sie vielleicht ein Beispiel geben, wie die endgültige Darstellung aussehen soll? –