- 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__'
序列化完结果:
【文章编写不易,如需转发请联系作者!】