Il mio modello è simile al seguente:Come estendere il modello a livello serializzatore con django-resto-quadro
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()
Quello che mi piacerebbe fare è esporre un elenco dei componenti (non MenuItemComponents) in data MenuItem che includerebbe il campo isReplaceable. Finora ho:
#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
che espone un elenco di MenuItemComponents e clienti forze per rendere più chiamate al fine di recuperare tutti i componenti. L'elenco dei componenti di Exposing con dati aggiuntivi dal campo isReplace potrebbe risolvere il problema.
EDIT
Alla fine mi piacerebbe avere una lista che elenca gli elementi componenti, ma gli elementi sono exteded con il campo da isReplaceable MenuItemComponent modello:
{
"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
}
]
}
Potresti forse dare un esempio di come vorresti che fosse la rappresentazione finale? –