首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest框架--当尝试从json添加带有1属性作为数组的模型时序列化程序错误

Django Rest框架--当尝试从json添加带有1属性作为数组的模型时序列化程序错误
EN

Stack Overflow用户
提问于 2021-02-09 13:19:15
回答 1查看 31关注 0票数 0

我试图用Django RestFramework创建一个API来保存一些计算机信息。

当json有一个属性是IPv4字段的数组时,我遇到了一个问题。

我生成了以下代码

模型

代码语言:javascript
运行
复制
class Computer(models.Model):
    hostname = models.CharField(max_length=32)
    os_system = models.CharField(max_length=60)
    
class ComputerIPAddress(models.Model):
    computer = models.ForeignKey(Computer,on_delete=models.CASCADE)
    ip_address = models.GenericIPAddressField()

串行化器

代码语言:javascript
运行
复制
class ComputerIPAddressSerializer(serializers.ModelSerializer):
    class Meta:
        model = ComputerIPAddress
        fields = ('__all__')

class ComputerSerializer(serializers.ModelSerializer):
    ip_address = ComputerIPAddressSerializer(many=True)
    class Meta:
        model = Computer
        fields = ('__all__')

视图集

代码语言:javascript
运行
复制
class ComputerViewSet(viewsets.ModelViewSet):
    queryset = Computer.objects.all()
    serializer_class = ComputerSerializer

class ComputerIPAddressViewSet(viewsets.ModelViewSet):
    queryset = ComputerIPAddress.objects.all()
    serializer_class = ComputerIPAddressSerializer

这个想法是,IP属于计算机(如果计算机被删除,我不想拥有这个IP),一台计算机可以将多个IP分配给它。

发送的json如下:

代码语言:javascript
运行
复制
{'hostname':'PC-01','os_system':'Windows 10','ip_address':['192.168.1.10','192.168.2.10']}
EN

回答 1

Stack Overflow用户

发布于 2021-02-09 15:32:36

我将通过重写create方法ComputerSerializer来解决这个问题。

代码语言:javascript
运行
复制
class ComputerSerializer(serializer.ModelSerializer):
   ...
   def create(self, validated_data):
       ip_address = validated_data.pop("ip_address", None)
       computer = Computer.objects.create(**validated_data)

       if ip_address:
           for ip in ip_address:
               computer.computeripaddress_set.create(ip)

       return computer
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66119812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档