django rest framework 外键序列化方法与问题总结
来源:互联网 发布:mac photoshop 破解版 编辑:程序博客网 时间:2024/06/04 19:45
版权声明:本文为博主原创文章,未经博主允许不得转载。
为前端提供数据时,往往是这样的json
{ 'album_name': 'Undun', 'artist': 'The Roots', 'tracks': 01}......
如果需要外键字段对应表的详细信息,像这样
{ 'album_name': 'The Grey Album', 'artist': 'Danger Mouse', 'tracks': [ {'order': 1, 'title': 'Public Service Announcement', 'duration': 245}, {'order': 2, 'title': 'What More Can I Say', 'duration': 264}, {'order': 3, 'title': 'Encore', 'duration': 159}, ... ],}
要怎么配置?查看 django rest framework 官网说明http://www.django-rest-framework.org/api-guide/relations/
虽然讲到了怎么操作,但是不详细,屡屡遇坑
所用到的model
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, 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)
配置serializerclass TrackSerializer(serializers.ModelSerializer): class Meta: model = Track fields = ('order', 'title', 'duration')class AlbumSerializer(serializers.ModelSerializer): tracks = TrackSerializer(many=True, read_only=True) class Meta: model = Album fields = ('album_name', 'artist', 'tracks')
好像搞定了,运行起来才发现有个坑Got AttributeError when attempting to get a value for field 'tracks' on serializer 'AlbumSerializer'
没有tracks字段,咋整?
原来只要在model foreignkey里面添加related_name='tracks',
album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)就搞定了。。
官网例子里有,但是很容易忽略,这里提出来,希望大家注意
为前端提供数据时,往往是这样的json
{ 'album_name': 'Undun', 'artist': 'The Roots', 'tracks': 01}......
如果需要外键字段对应表的详细信息,像这样
要怎么配置?{ 'album_name': 'The Grey Album', 'artist': 'Danger Mouse', 'tracks': [ {'order': 1, 'title': 'Public Service Announcement', 'duration': 245}, {'order': 2, 'title': 'What More Can I Say', 'duration': 264}, {'order': 3, 'title': 'Encore', 'duration': 159}, ... ],}
查看 django rest framework 官网说明http://www.django-rest-framework.org/api-guide/relations/
虽然讲到了怎么操作,但是不详细,屡屡遇坑
所用到的model
配置serializerclass Album(models.Model): album_name = models.CharField(max_length=100) artist = models.CharField(max_length=100)class Track(models.Model): album = models.ForeignKey(Album, 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 TrackSerializer(serializers.ModelSerializer): class Meta: model = Track fields = ('order', 'title', 'duration')class AlbumSerializer(serializers.ModelSerializer): tracks = TrackSerializer(many=True, read_only=True) class Meta: model = Album fields = ('album_name', 'artist', 'tracks')
Got AttributeError when attempting to get a value for field 'tracks' on serializer 'AlbumSerializer'
没有tracks字段,咋整?原来只要在model foreignkey里面添加related_name='tracks',
album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)就搞定了。。
官网例子里有,但是很容易忽略,这里提出来,希望大家注意
阅读全文
0 0
- django rest framework 外键序列化方法与问题总结
- django rest framework 外键序列化方法与问题总结
- Django REST framework 序列化与反序列化
- django-rest-framework指南(1):序列化
- Django REST framework教程一:序列化
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- Django-Rest-Framework 教程: 1. 序列化 (Serialization)
- django rest framework 入门1-序列化 Serialization
- Django REST framework 中文教程1:序列化
- django-rest-framework序列化的使用(一)
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- c++ vector
- 进程和线程的区别
- mapreduce的任务切片规划机制、job提交流程、Mapreduce中的分区Partitioner与流量汇总程序开发
- 关于Qt Creater中资源文件和文件路径的记录
- CF round#439 div.2 C The Intriguing Obsession【DP】
- django rest framework 外键序列化方法与问题总结
- Java快速入门本地调用哈工大LTP实例
- jeecg问题解决方案
- svn客户端提交项目代码后自动同步svn服务器上的项目代码到linux服务器上
- Java中使用匿名内部类创建多线程的3种方式
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- go经典面试题:浅析接口
- 小目标
- 关于一些SSM框架的面试题