Python Django嵌套序列化程序未序列化外键对象
我知道以前有人问过这个问题,但我已经尝试了很多不同的解决方案,似乎无法让它发挥作用。我所要做的就是在api调用中显示一个对象在另一个对象中。在这个简单的例子中,假设我有一个艺术家对象和一个轨迹对象。序列化轨迹对象时,我希望使用外键显示它所指的艺术家对象 这是我的models.py: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
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的序列化程序。谢谢你的帮助!