Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Python序列化程序预取_Python_Django - Fatal编程技术网

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中的另一个键

希望这有帮助