Поле сериализатора не отображается
поле trips в carserializer отображается в ответе, однако поле tickets в Tripserializer не отображается, логика выглядит довольно идентично, что я упускаю?
from rest_framework import serializers
from .models import Car, Ticket,Trip
class TicketSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
fields = '__all__'
class TripSerializer(serializers.ModelSerializer):
tickets = TicketSerializer(many=True,read_only=True,required=False,source='ticket_set' )
class Meta:
model = Trip
fields = '__all__'
class CarSerializer(serializers.ModelSerializer):
trips = TripSerializer(many=True, read_only=True, required=False, source='trip_set')
class Meta:
model = Car
fields = '__all__'
вот мой models.py
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class Car(models.Model):
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
model = models.CharField(max_length=100)
no_plate = models.CharField(max_length=10)
pub_date = models.DateTimeField(auto_now=True)
imgUrl = models.TextField()
def __str__(self):
return self.no_plate
class Meta:
ordering = ["-pub_date"]
class Trip(models.Model):
car = models.ForeignKey(Car, on_delete=models.CASCADE)
seats = models.IntegerField()
price = models.FloatField()
start = models.CharField(max_length=200)
finish = models.CharField(max_length=200)
pub_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.request
class Meta:
ordering = ["-pub_date"]
class Ticket(models.Model):
car = models.ForeignKey(Car, on_delete=models.CASCADE)
ticket_by = models.ForeignKey(User, on_delete=models.CASCADE)
trip = models.ForeignKey(Trip,related_name='tickets', on_delete=models.CASCADE)
pub_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.question
class Meta:
unique_together = ("car", "ticket_by")
и файл представлений
from rest_framework import generics,status
from .models import Car,Trip,Ticket
from .serializers import CarSerializer, TripSerializer,TicketSerializer
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from rest_framework.exceptions import PermissionDenied
class CarListCreate(generics.ListCreateAPIView):
queryset=Car.objects.all()
serializer_class = CarSerializer
class CarDetail(generics.RetrieveDestroyAPIView):
queryset = Car.objects.all()
serializer_class = CarSerializer
class TripList(generics.ListCreateAPIView):
queryset = Trip.objects.all()
serializer_class = TripSerializer
class CreateTicket(generics.CreateAPIView):
serializer_class = TicketSerializer
поле trips в CarsSeriliazer отображается, однако поле tickets в Tripserilizer не отображается, хотя код практически одинаковый, что я упускаю?
После того, как мы поработали, атрибут source оказался дьяволом в деталях, поле отображалось, когда source был удален, я не знаю, почему это так... вот редактирование TripSerializer:
class TripSerializer(serializers.ModelSerializer):
tickets = TicketSerializer(many=True,read_only=True, )
class Meta:
model = Trip
fields = '__all__'