栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django 序列化manytomany外键

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django 序列化manytomany外键

  • models模型层定义manytomany外键
class Field(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=15, verbose_name='领域名称')

    class Meta:
        verbose_name = '领域表'
        
        
class PositionNew(models.Model):
    field = models.ManyToManyField(Field, verbose_name="行业类型")

    class Meta:
        verbose_name_plural = "岗位表"
  • 序列化(具体步骤说明见代码注释)
# 为了下边多对多关系序列化用
class FieldSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Field
        fields = '__all__'

class PositionNewSerializer(serializers.ModelSerializer):
	# manytomany不能和普通的ForeignKey一样序列化
    field_name = serializers.SerializerMethodField()  # 自定义序列化方法

	# 规则:get_自定义序列化字段名(如上边field_name )
    def get_field_name(self, obj):
        fd = obj.field.all()  # obj是该模型的对象
        # 调用上边定义的外键序列化器序列化(相当于序列化了两次)
        jon = FieldSerializer(instance=fd, many=True)
        return jon.data
        
    class Meta:
        model = models.PositionNew
        fields = '__all__'
    
    	

序列化完结果:

【文章编写不易,如需转发请联系作者!】

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号