极乐门资源网 Design By www.ioogu.com
展示:
一般情况下序列化得到的外键的内容只是id:
... { fields: { uat_date: "2015-07-25", statu: "CG", name: "慢赢优化", tester: [ 1 ], product_manager: 1, module: [ 2, 3 ], project: 1, plan_version: 1, publish_date: "2015-07-25", actual_version: 1, type: "XQ", developer: [ 1 ] }, model: "amazingTable.content", pk: 1 } ...
序列化时得到外键的真实值:
... { fields: { uat_date: "2015-07-25", statu: "CG", name: "慢赢优化", tester: [ [ "kevin" ] ], product_manager: [ "kevin" ], module: [ [ "closewebbus", "我是描述" ], [ "xckhapp", "我是描述" ] ], project: 1, plan_version: 1, publish_date: "2015-07-25", actual_version: 1, type: "XQ", developer: [ [ "kevin" ] ] }, model: "amazingTable.content", pk: 1 } ...
方法:
我序列化的是Content表,它含有一个外键关联的是Module表,1对多
我要先序列化Module表,然后序列化Content表的时候才可以使用到Module的真实值
class ModuleManager(models.Manager): def get_by_natural_key(self, name, description): return self.get(name = name, description = description) class Module(models.Model): objects = ModuleManager() name = models.CharField(max_length=100, unique=True) description = models.CharField(max_length=100, blank=True, null=True) # natual_key的序列化 def natural_key(self): return (self.name, self.description) # natual_keys的解序列化 class Meta: unique_together = (('name', 'description'),)
序列化是否使用真实值:
jsons = serializers.serialize('json', queryset,use_natural_foreign_keys=False)
jsons = serializers.serialize('json', queryset,use_natural_foreign_keys=True)
附:
如果要给Content表序列化,那么要使用到外键的actual_key,要保证外键先序列化,如下依赖:
class Content(models.Model): name = models.CharField(max_length=100) ... module = models.ManyToManyField('Module') def natural_key(self): return (self.name,) + self.module.natural_key() # 和"def"同缩进 natural_key.dependencies = ['example_app.module']
补充知识:django原生的序列化serialize解析
在写接口的时候,大家都离不开对query结果集的序列化
嗯嗯嗯,一般我们都有DRF里面的序列化工具,但是django原生的serialize你们有
用过吗?????????????
上代码:
from django.core.serializers import serialize class Test(APIView): def get(self,request): origin_data = Test.objects.all() serialized_data = serialize('json',origin_data) return HttpResponse(serialized_data )
当然,再有更便捷的工具的情况下,这种方法并不常用
在有特定需要的时候,使用这种django原生序列化,还是十分方便的
以上这篇django序列化时使用外键的真实值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无django序列化时使用外键的真实值操作的评论...
更新日志
2024年11月15日
2024年11月15日
- 外媒称PS5pro违背承诺:《蜘蛛侠2》根本没法4K60帧
- 令晴 Lynn《The Make》[320K/MP3][44.47MB]
- 令晴 Lynn《The Make》[Hi-Res][24bit 48kHz][FLAC/分轨][295.42MB]
- 雷婷《移情别恋HQⅡ》头版限量编号[低速原抓WAV+CUE][1G]
- FUNDAMENTAL.1989-感觉号渡轮【SONY】【WAV+CUE】
- 上山安娜.1986-上山安娜【EMI百代】【WAV+CUE】
- 张真.1993-失恋十四行【上华】【WAV+CUE】
- 钟明秋《爱有天意HQCD》[低速原抓WAV+CUE]
- 孙云岗唢呐《金声玉振[HIFI珍藏版]》[低速原抓WAV+CUE]
- 谭艳精讯TEST-CD试音39号》2CD[DTS-WAV]
- 姚璎格《发烧女中音》DSD版[低速原抓WAV+CUE][1G]
- 张玮伽《微风细雨DSD》发烧大碟[WAV+CUE][1.1G]
- 群星《2024好听新歌14》十倍音质 U盘音乐 [WAV分轨][966M]
- s14全球总决赛T1战队队员都有谁 LOLs14全球总决赛T1战队介绍
- 英雄联盟faker身价有10亿吗 英雄联盟faker身价介绍一览