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__'
    
    	

序列化完结果:
在这里插入图片描述
【文章编写不易,如需转发请联系作者!】

猜你喜欢

转载自blog.csdn.net/qq_46170664/article/details/126232694