python - DJango - 如何在序列化程序中将完整模型对象作为新字段传递
问题描述
我想将完整的 Artist 模型对象传递给序列化程序,因此我创建了一个新字段serializers.SerializerMethodField
并在其中传递了 Artist 对象。但我得到了错误。
getattr(): attribute name must be string
class ArtistSerializer(serializers.ModelSerializer):
similar_artists = serializers.SerializerMethodField(Artist.objects.all())
class Meta:
model = Artist
fields = ('id', 'artist_name', 'albums', 'similar_artists')
我想我完全错了。那么有没有办法通过带有手动字段的序列化程序在单个对象中传递所有值或所有艺术家。
我想在序列化程序中实现类似的东西。
{
"id": 1,
"albums": [
{
"id": 1,
"album_name": "Fearless (Taylor's Version)"
},
{
"id": 7,
"album_name": "Reputation"
},
{
"id": 8,
"album_name": "1989"
}
],
"artist_name": "Taylor Swift",
"similar_artists": [
{
Artist Object
}
]
},
模特艺术家
class Artist(models.Model):
artist_name = models.CharField(max_length=100)
album = models.CharField(max_length=1000)
def __str__(self):
return self.artist_name
解决方案
class ArtistSerializer(serializers.ModelSerializer):
class Meta:
model = Artist
fields = ('id', 'artist_name', 'albums',)
class ArtistSimilarSerializer(serializers.ModelSerializer):
similar_artists = serializers.SerializerMethodField()
def get_similar_artists(self, artist):
queryset = Artist.objects.all()
return ArtistSerializer(queryset, many=True).data
class Meta:
model = Artist
fields = ('id', 'artist_name', 'albums', 'similar_artists')
尝试这个
推荐阅读
- reactjs - 如何将 Shopify 网站集成到 React Native 应用程序中
- python - “缺少文档字符串”错误,即使我已经添加了它们
- javascript - 哪些参数最好存放在localStorage中?
- nlp - 文本分类中的异常检测
- ios - 如何在提交按钮操作中从 tableview 获取先前选择的数据
- android - 尝试与 aws iot mqtt 代理连接时连接丢失
- java - 将方法调用包装在新对象中有什么好处?
- ios - 如何快速向一个方向自动滚动 UICollectionview?
- ios - 从小标题过渡到大标题在目标视图控制器中显示小标题片刻
- ios - 有什么方法可以在不使用 IDFA 的情况下为设备生成唯一 ID?