小编Bha*_*ani的帖子

如何在 django Rest 框架中使用 ListSerializer 创建和更新多条记录?

以下是使用 ListSerializer 在 django Rest 框架中一次创建和更新多个记录的方法。这种方式非常排序并且响应速度快。

当您想要创建对象时,请传递id: null因为id是必填字段,当您想要更新记录时,请传递特定 id。

答案如下:

模型.py

class BookDetail(models.Model):
    author = models.ForeignKey('bookapp.Author', null=True, on_delete=models.CASCADE)
    title = models.CharField(max_length=255, null=True, blank=True)
    price = models.CharField(max_length=100, null=True, blank=True)
    discount = models.FloatField(default=0)
    tax_percentage = models.IntegerField(default=0)
    total_price = models.FloatField(default=0)

    created_at = models.DateTimeField(auto_now_add=True, editable=False)
    modified_at = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class BookDetailsListSerializer(serializers.ListSerializer):
    def update(self, instance, validated_data):
        # Perform creations and updates.
        ret = []

        for data in validated_data:
            if "id" in data and data['id'] not in ['', None]:
                BookDetail.objects.filter(id=data['id']).update(**data)
                ret.append(data)
            else: …
Run Code Online (Sandbox Code Playgroud)

python django multiple-instances insert-update django-rest-framework

5
推荐指数
0
解决办法
4253
查看次数