Django Python序列化程序预取
我正在使用序列化包含多对多关系的模型列表。即使与预取_相关,序列化也会检索预取字段。例如:Django Python序列化程序预取,python,django,Python,Django,我正在使用序列化包含多对多关系的模型列表。即使与预取_相关,序列化也会检索预取字段。例如: class House(models.Model): name = models.CharField(...) rooms = models.ManyToManyField(Door) class Room(models.Model): name = models.CharField(...) num_windows = models.PositiveIntegerFie
class House(models.Model):
name = models.CharField(...)
rooms = models.ManyToManyField(Door)
class Room(models.Model):
name = models.CharField(...)
num_windows = models.PositiveIntegerField(...)
使用调试模式,我可以看到以下函数发出了预期的2个数据库请求
getHouses():
House.objects.all().prefetch_related('rooms')
但是,当我尝试使用django.python.Serializer序列化这个对象时,它会对每个房间进行额外的查询。有没有办法配置序列化程序以查看预回迁的m2m关系?解决此问题的唯一方法是自己构建映射。您将需要2个独立的序列化程序,一个用于房屋,另一个用于房间。 序列化时,首先对house查询进行迭代并将其序列化,然后运行house.rooms的Room序列化程序,该程序将为您提供序列化的Room,可以使用house_serialized['rooms_serialized']=rooms_serialized将其作为序列化的house中的另一个键
希望这能有所帮助。摆脱这一问题的唯一方法是自己绘制地图。您将需要2个独立的序列化程序,一个用于房屋,另一个用于房间。 序列化时,首先对house查询进行迭代并将其序列化,然后运行house.rooms的Room序列化程序,该程序将为您提供序列化的Room,可以使用house_serialized['rooms_serialized']=rooms_serialized将其作为序列化的house中的另一个键 希望这有帮助