问题描述
我是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 (将#修改为@)