我有以下型号:
class MyModel(models.Model):
parent = models.ForeignKey(ParentModel)
a_field = models.CharField(max_length=10)
# some more fields
Django REST Framework序列化程序:
class MyModelSerializer(serializers.ModelSerializer):
class Meta(object):
model = MyModel
使用以下代码更新多个项目时,更新的性能非常差,特别是如果MyModel
包含许多记录(在我的情况下为~30K)。
updated_objects = [...] # an array of serialized MyModel instances
existing_objects = MyModel.objects.filter(id__in = [obj['id'] for obj in updated_objects])
s = MyModelSerializer(existing_objects, data = updated_objects, many = True)
s.is_valid()
s.save()
调试代码后,我发现每个更新的项目都会执行5个SQL查询:
parent
字段解析为ParentModel
个实例。full_clean
功能期间有没有办法提高批量更新的性能,例如缓存已解析的ParentModel
实例?在30K的表中更新50行需要超过20秒。