Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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_Python 2.7 - Fatal编程技术网

使用Django模型分组

使用Django模型分组,django,python-2.7,Django,Python 2.7,我有一个模型 class Compared(models.Model): store = models.ForeignKey(Store) product = models.ForeignKey(Product) class Meta(): unique_together = ('store', 'product') 并且其中包含以下类型的数据 (store, product) (1, 1) (2, 1) (3, 1) (2, 2) (2, 3) (3

我有一个模型

class Compared(models.Model):
    store = models.ForeignKey(Store)
    product = models.ForeignKey(Product)

    class Meta():
        unique_together = ('store', 'product')
并且其中包含以下类型的数据

(store, product)
(1, 1)
(2, 1)
(3, 1)
(2, 2)
(2, 3)
(3, 3)
(3, 2)
我想按产品分组,并获得该组中的所有门店

(product, (stores))
(1, (1, 2, 3))
(2, (2, 3))
(3, (2, 3))

是否有一个内置的查询功能来实现这一点,或者我必须手动使他们这样做

您可以使用
itertools
进行分组:

from itertools import group_by    
cs = Compared.objects.all().order_by( 'product__pk' ) )
for p, l in groupby( l , key = lambda x: x.store.pk ):
    print p.pk                 #the produt name
    print [ s.pk for s in l ]  #stores pks
    print ( p.pk, tuple( s.pk for s in l  ) )
注意:未测试语法

注意:此分组“在内存中”,但在数据库中


注意:订购方式很重要。

可能会对您有所帮助。希望您先尝试搜索Umair。这是否回答了你的问题:?