如何在Django rest框架中检索外键字段?

贝曼

给定下面的模型和序列化器类,当我检索Track细节时,它将仅显示Track标题,而不显示相关的Artist。

检索曲目详细信息时,我还将如何显示歌手姓名?

models.py

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

    def __str__(self):
        return self.name

class Track (models.Model):    
    artist = models.ForeignKey(Artist, blank=True, null=True, on_delete=models.SET_NULL, verbose_name="Artist")
    title = models.CharField(max_length=100, verbose_name="Title")

    def __str__(self):
        return self.title

serializers.py

class ArtistSerializer(serializers.ModelSerializer):

    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField()

    class Meta:
        model = Artist
        fields = ('id', 'name')

class TrackSerializer(serializers.ModelSerializer):

    class Meta:
        model = Track
        fields = '__all__'
谢尔盖M.

我认为您需要自定义字段,请尝试以下序列化程序:

class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ('title', 'artist','artist_name')

    artist_name = serializers.SerializerMethodField('get_artists_name')

    def get_artists_name(self, obj):
        return obj.artist.name

它产生这样的东西。

[
    {
        "title": "Don't let me down",
        "artist": 2,
        "artist_name": "The Beatles"
    },
    {
        "title": "Summertime",
        "artist": 1,
        "artist_name": "Ella Fitzgerald"
    }
]

最好的祝福。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在django rest框架中序列化tthe外键字段

如何在Django Rest框架中获取ID的外键字段名称insted

如何在Django Rest框架中使用外键计数

如何在Django Rest框架中获取外键对象以显示完整对象

如何在Django Rest Framework的post方法中添加外键字段

Django rest 框架:如何根据特定字段(= 不是 id)获取外键

如何在 Django 中获取外键字段值?

Django 2.1 create 方法来创建嵌套字段(外键关系)。使用 Django 的 Rest 框架

Django rest框架无法保存外键

Django REST框架外键和过滤

如何在 django rest 框架中保存一个对 User 有外键的实体?

如何过滤django中的外键字段?

如何在restful框架中过滤由外键设置的django查询?

如何在不显着增加数据库调用时间的情况下检索 django (DRF) 中的对象列表(包括外键字段数据)

如何在Django Rest Framework中显示字段值而不是外键的ID,以确保所有字段都像以前一样在DRF HTML表单上显示

Django Rest框架,如何在ModelSerializer中包括'__all__'字段和相关字段?

在Django rest框架中检索明细对象时更改模型中的字段

Django:如何在聚合中使用外键字段?

如何在 django 的外键字段上运行 _icontains 方法

如何在 django rest 框架中發布指定整數外鍵的實體

如何使用jpa在json中检索我的外键字段值?

使用viewsets.ModelViewSet视图更新Django rest框架模型中的外键

如何在MySQL中仅通过外键检索数据?

如何在django模型的外键字段中添加和更新数据

如何在Django models.py中更新外键字段?

如何在Django模型中设置外键字段以不返回任何值?

如何在Django序列化器中的外键关系之上从ManyToMany关系访问字段?

如何在Django中为外键字段定义__str__方法?

如何在 Django Admin 中过滤外键字段的查询集