Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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图像列表_Django_Database_Performance - Fatal编程技术网

django图像列表

django图像列表,django,database,performance,Django,Database,Performance,我想创建一个网上商店的好模式。模型应该包含许多图像。我有两种方法可以做到这一点: (一) (二) 据我所知,要获得所有图像以获得良好效果: 在1)的情况下,“Img”表中的行将被筛选出商品的id,如果我有100种商品,该表将被筛选100次以获得100种不同的id 在2)的情况下,如果一个普通商品有10张链接的图片,“Img”表将被查询10次,以根据其ID返回10行。所以对于100种商品,“Img”表将被ids查询大约1000次,但不需要过滤。ChainImg也可能指向自身并造成问题。但这是可以避

我想创建一个网上商店的好模式。模型应该包含许多图像。我有两种方法可以做到这一点:

(一)

(二)

据我所知,要获得所有图像以获得良好效果:

在1)的情况下,“Img”表中的行将被筛选出商品的id,如果我有100种商品,该表将被筛选100次以获得100种不同的id

在2)的情况下,如果一个普通商品有10张链接的图片,“Img”表将被查询10次,以根据其ID返回10行。所以对于100种商品,“Img”表将被ids查询大约1000次,但不需要过滤。ChainImg也可能指向自身并造成问题。但这是可以避免的


哪种方法更好?更快?更有效率?正确吗?

在这种情况下,第一种方法是正确的

在第一种情况下,您可以在good.images中为image创建一个简单的循环

在第二种情况下,您必须在同一个表上执行多个查找,这将需要一个循环在同一个表上执行多个联接,这是不必要的复杂性

class Good(models.Model):
    ...

class Img(models.Model):
    img = models.ImageField(...
    good = models.ForeignKey("Good", ...
class Good(models.Model):
    img = models.ForeignKey('ChainImg', ...

class ChainImg(models.Model):
    img = models.ImageField(...
    anotherimg = models.ForeignKey("ChainImg", ...