DetailSerializer, чтобы иметь свойство listserializer - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу добавить данные json из listserializer в класс DetailSerializer.Сериализатор выглядит примерно так: serializer.py

class ListSerializer(serializers.ModelSerializer):

    class Meta:
        model = Fastest_laps
        fields = '__all__'

class DetailSerializer(serializers.ModelSerializer):
    listserializer = ListSerializer( read_only=True, many=True)

    class Meta:
        model = Driver
        fields = 
        ('place_of_birth','driver','listserializer','picture')

Но на самом деле я не вижу данные, как только я их просматриваю, я вижу только подробные данные сериализатора (модель драйвера)

class Fastest_laps(models.Model):
    driver_name = models.CharField(max_length=25, null=True)
    grand_prix = models.CharField(max_length=15, blank=True)
    car_model = models.CharField(max_length=50)
    time_taken = models.CharField(blank=True, max_length=8)

    def __str__(self):
        return self.driver_name

class Driver(models.Model):

    place_of_birth = models.CharField(max_length=25)
    driver = models.ForeignKey(Fastest_laps, 
    db_column='driver_name')
    picture = models.ImageField(blank=True, null=True)

    def __str__(self):
        return str(self.driver)

api.py

class FastLapsSet(ModelViewSet):
queryset = Fastest_laps.objects.all()
serializer_class = ListSerializer

class DriverSet(ModelViewSet):
queryset = Driver.objects.all()
serializer_class = DetailSerializer

api view

1 Ответ

0 голосов
/ 21 февраля 2019

Вы должны переименовать вашу собственность в поле имени модели:

class DetailSerializer(serializers.ModelSerializer):
    driver = ListSerializer(read_only=True)
    # ^^^
    class Meta:
        model = Driver
        fields = 
        ('place_of_birth','driver','driver','picture')

или добавить атрибут source :

class DetailSerializer(serializers.ModelSerializer):
    listserializer = ListSerializer(source='driver', read_only=True)
                                           #^^^^
    class Meta:
        model = Driver
        fields = 
        ('place_of_birth','driver','listserializer','picture')
...