Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django嵌套序列化程序未序列化外键对象_Python_Django_Serialization_Django Rest Framework - Fatal编程技术网

Python Django嵌套序列化程序未序列化外键对象

Python Django嵌套序列化程序未序列化外键对象,python,django,serialization,django-rest-framework,Python,Django,Serialization,Django Rest Framework,我知道以前有人问过这个问题,但我已经尝试了很多不同的解决方案,似乎无法让它发挥作用。我所要做的就是在api调用中显示一个对象在另一个对象中。在这个简单的例子中,假设我有一个艺术家对象和一个轨迹对象。序列化轨迹对象时,我希望使用外键显示它所指的艺术家对象 这是我的models.py: from django.db import models class Artist(models.Model): artist_name = models.CharField(max_length=100

我知道以前有人问过这个问题,但我已经尝试了很多不同的解决方案,似乎无法让它发挥作用。我所要做的就是在api调用中显示一个对象在另一个对象中。在这个简单的例子中,假设我有一个艺术家对象和一个轨迹对象。序列化轨迹对象时,我希望使用外键显示它所指的艺术家对象

这是我的models.py:

from django.db import models


class Artist(models.Model):
    artist_name = models.CharField(max_length=100)


class Track(models.Model):
    artist = models.ForeignKey(Artist, on_delete=models.CASCADE, verbose_name='Artist' )
    track_name = models.CharField(max_length=100)

还有我的serializers.py

from rest_framework import serializers
from . import models

class ArtistSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Artist
        fields = '__all__'



class TrackSerializer(serializers.ModelSerializer):
    artist = ArtistSerializer(read_only=True)
    class Meta:
        model = models.Track
        fields = ('id', 'track_name', 'artist')

如果有人能帮忙,我们将不胜感激


谢谢

您从
TrackSerializer
获得的数据是什么?我测试了它,您的代码运行正常!好吧,我想好了。问题是,我需要不同的序列化程序,这取决于它是POST还是GET请求。对于GET,我使用的代码。然而,当我尝试做一个POST请求时,它让我创建了一个新的艺术家,而不仅仅是与一个预先存在的艺术家链接。所以我只写了一个特定于post的序列化程序。谢谢你的帮助!您从
TrackSerializer
获取的数据是什么?我测试了它,您的代码正常工作!好吧,我想好了。问题是,我需要不同的序列化程序,这取决于它是POST还是GET请求。对于GET,我使用的代码。然而,当我尝试做一个POST请求时,它让我创建了一个新的艺术家,而不仅仅是与一个预先存在的艺术家链接。所以我只写了一个特定于post的序列化程序。谢谢你的帮助!