当前位置: 首页 > 知识库问答 >
问题:

Django REST框架:使用序列化程序实现简单的ForeignKey关系

裴心思
2023-03-14

我正在使用django REST框架,并尝试映射一个简单的外键关系,以提供相关数据供进一步使用,类似于以下请求:

使用django rest框架的序列化程序的反向关系

我收到的不是结果,而是以下异常:

当试图在序列化器AlbuSerializer上获取字段album_name的值时,获得了Attie teError。序列化器字段可能命名不正确,并且与int实例上的任何属性或键不匹配。原始异常文本是:“int”对象没有属性“album_name”。

模型:

    class Album(models.Model):
        album_name = models.CharField(max_length=100)
        artist = models.CharField(max_length=100)

    class Track(models.Model):
        # album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)
        album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)
        order = models.IntegerField()
        title = models.CharField(max_length=100)
        duration = models.IntegerField()

        class Meta:
            unique_together = ('album', 'order')
            ordering = ['order']

        def __unicode__(self):
            return '%d: %s' % (self.order, self.title)

序列化程序

class AlbumSerializer(serializers.ModelSerializer):
    class Meta:
        model = Album
        fields = ('id', 'album_name', 'artist' )
class TrackSerializer(serializers.ModelSerializer):
    album_id = AlbumSerializer(many=False, read_only=True)
    class Meta:
        model = Track
        fields = ('order', 'title', 'duration', 'album_id')

查看:

class TrackView(viewsets.ModelViewSet):
    queryset = Track.objects.all().select_related('album')
    serializer_class = serializers.TrackSerializer

到目前为止,我已经尝试了:

  1. 使用反向关系将具有相关曲目的相册序列化为嵌套序列化程序=

因为我已经没有什么想法和资料可以浏览了,所以我提出了一个问题:如何在我的示例中为每首曲目列出专辑的所有或单个属性(!=PrimaryKey)。

共有1个答案

丁曦
2023-03-14

音轨中的唱片集id是唱片集的主键,所以您可以在错误描述中键入。您需要使用相册字段而不是相册id指定整个相册对象:

class TrackSerializer(serializers.ModelSerializer):
    album = AlbumSerializer(many=False, read_only=True)
    class Meta:
        model = Track
        fields = ('order', 'title', 'duration', 'album')
 类似资料:
  • 问题内容: 像其他几个人一样,我在序列化Entity Framework对象时遇到问题,因此我可以通过JSON格式的AJAX发送数据。 我有以下服务器端方法,我正在尝试通过jQuery使用AJAX进行调用 通过AJAX调用会导致此错误: 这是因为实体框架创建循环引用以保持所有对象相关并且可访问服务器端的方式。 我从(http://hellowebapps.com/2010-09-26/produc

  • 本文向大家介绍jQuery序列化表单成对象的简单实现,包括了jQuery序列化表单成对象的简单实现的使用技巧和注意事项,需要的朋友参考一下 在使用easyui的datagrid组件时,在查询时传递的查询参数是对象类型,为了方便,扩展了jquery中的序列化方法,调用该方法,可以将表单的所有数据序列化 具体使用: 以上这篇jQuery序列化表单成对象的简单实现就是小编分享给大家的全部内容了,希望能给

  • 本文向大家介绍简单了解Ajax表单序列化的实现方法,包括了简单了解Ajax表单序列化的实现方法的使用技巧和注意事项,需要的朋友参考一下 原生表单序列化 随着Ajax的出现,表单序列化已经成为一种需求,在学习原生Ajax时,若用POST方法向后台提交数据时,就需要将表单序列化 在JavaScript中可以利用表单字段的type属性,连同name和value属性,一起实现表单的序列化。 在进行表单序列

  • 本文向大家介绍C#使用timer实现的简单闹钟程序,包括了C#使用timer实现的简单闹钟程序的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用timer实现的简单闹钟程序。分享给大家供大家参考。具体如下: 当我在电脑上工作,我经常会被一些东西吸引,比如某宝,结果三个小时过去了我都完全没有注意到。所以我通过C#做了一个简单闹钟程序,这个小程序主要使用C# Timer对象,让用户设定一

  • 问题内容: 我正在尝试使用symfony序列化程序组件反序列化具有关系的实体。这是我的实体: 和 流派实体 : 现在在我的 控制器操作中, 我正在尝试以下操作: 还有我的 json数据 : 但是我得到了下一个 错误 : 给定类型为“ AppBundle \ Entity \ Genre”,“ array”的预期参数(500内部服务器错误) 是否可以使用内部具有关系的实体反序列化json请求? 感谢

  • 问题内容: 我正在使用Ef 4.1,并且有一个POCO对象要序列化为JSON,我已经读到在使用延迟加载时这样做有问题,但是我不确定我可以这样做,因为一个可以的集合。 有什么办法吗?将这种对象序列化为JSON? 我的对象看起来像: 问题答案: 问题是循环引用。避免这种情况的一种简单方法是使用Json.Net http://james.newtonking.com/projects/json- net