以下是使用 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