I'm trying to create a combined viewset that displays data in a nested format from three django models.
I'm receiving an error when I try to return the viewset.
Got AttributeError when attempting to get a value for field `runner` on serializer `CombinedSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `Runner` instance.
Original exception text was: 'Runner' object has no attribute 'runner'.
serializers.py
class CombinedSerializer(serializers.Serializer):
event = EventSerializer()
market = MarketSerializer()
runner = RunnerSerializer()
class Meta:
fields = ('event' , 'market', 'runner')
views.py
class CombinedViewSet(mixins.ListModelMixin,
viewsets.GenericViewSet,
mixins.RetrieveModelMixin):
queryset = Runner.objects.all()
serializer_class = CombinedSerializer
models.py
class Event(models.Model):
sport_id = models.CharField(max_length=15)
event_id = models.BigIntegerField(unique=True)
event_name = models.CharField(max_length=200)
start_time = models.DateTimeField(null=True)
status = models.CharField(max_length=13)
class Market(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
market_id = models.BigIntegerField(unique=True)
market_name = models.CharField(max_length=35)
status = models.CharField(max_length=10)
volume = models.FloatField(null=True)
class Runner(models.Model):
event = models.ForeignKey(Event, null=True, default=None, on_delete=models.CASCADE)
market = models.ForeignKey(Market, null=True, default=None, on_delete=models.CASCADE)
runner_id = models.BigIntegerField(unique=True)
name = models.CharField(max_length=500)
back_odds = models.FloatField(null=True)
lay_odds = models.FloatField(null=True)
For some reason when I remove runner from the serializer Event and Market display in my api in nested format. When I add Runner I get the above error. How can I fix this and display all three in my API?