Django rest嵌套子序列化器具有反向关系列表创建

问题描述

我是django rest的新手,目前正在处理序列化程序以处理对象的嵌套创建 ModelB是要创建其实例的对象,它与modelC具有反向关系,与modelA具有直接关系

ModelA必须在创建过程中获取并传递给ModelB ModelC列表将与ModelB一起创建

模型

class ModelA(TimeStampMixin,CoordinateMixin):
    name = models.CharField(max_length=150)


class ModelB(TimeStampMixin):
    uuid = models.UUIDField(default=uuid.uuid4,editable=False,unique=True)
    modelA = models.ForeignKey(
        ModelA,on_delete=models.PROTECT,related_name='modela_reverse'
    )



class ModelC(TimeStampMixin):
    uuid = models.UUIDField(default=uuid.uuid4,unique=True)
    modelB = models.ForeignKey(ModelB,on_delete=models.CASCADE,related_name='modelb_reverse')
    modelD = models.ForeignKey(ModelD,related_name='modelD_reverse')
    
class ModelD(TimeStampMixin):

    uuid = models.UUIDField(default=uuid.uuid4,unique=True)
    name = models.CharField(max_length=50)

序列化器:

class ModelDSerializer(serializers.ModelSerializer):
 
    class Meta:
        model = ModelD
        fields = ['name','uuid']
 

class ModelCSerializer(serializers.ModelSerializer):
    modeld = ModelDSerializer(many=False)

    class Meta:
        model = ModelC
        fields = ['modeld','quantity']


class ModelA(serializers.ModelSerializer):
    class Meta:
        model = ModelA
        fields = ['name','uuid']
        read_only_fields = ['name']

    def to_internal_value(self,data):
        modelA = ModelA.objects.get(**data)
        return modelA


class ModelB(serializers.ModelSerializer):    
     modelb_reverse = ModelCSerializer(many=True)
     modelA = ModelASerializer(many=False)

    class Meta:
        model = ModelB
        fields = ['modelb_reverse','modelA']
    

直到现在,当仅包含嵌套的modelA时,我已经能够通过其序列化程序进行ModelB的创建,但是我一直坚持以某种方式修改解决方案,以通过嵌套的ModelCSerializer来创建反向对象

我正在寻找一种实现此目标的优雅方法,并且在这里停留了一段时间 非常感谢您的帮助 预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)