подсчитать значения из множества полей - PullRequest
2 голосов
/ 25 декабря 2010

Я пытаюсь подсчитать различные значения из группы объектов, которые имеют множество полей

, например

объект article имеет множество полей теговых объектов


одна статья имеет теги "tag1" "tag2"

в другой статье есть теги "tag2" "tag3"


Я бы хотел выяснить что-то, что могло бы вернуть что-то вроде:

"tag1": 1 "tag2": 2 "tag3": 1

Я думал, что мог бы что-то сделать с article.objects.all (). Values ​​('tags') или что-то еще, но я вышел пустым

Ответы [ 2 ]

6 голосов
/ 27 декабря 2010

models.py

class Topping(models.Model):
        name = models.CharField(max_length = 20)

class Pizza(models.Model):
        name = models.CharField(max_length = 20)
        toppings = models.ManyToManyField(Topping)

python manage.py shell

>>> from many_to_many.models import Pizza, Topping
>>> t1 = Topping(name = "T1")
>>> t2 = Topping(name = "T2")
>>> t3 = Topping(name = "T3")
>>> t4 = Topping(name = "T4")
>>> p1 = Pizza(name="P1")
>>> p2 = Pizza(name="P2")


>>> p1.toppings.add(t1)
>>> p1.toppings.add(t2)
>>> p2.toppings.add(t2)
>>> p2.toppings.add(t3)


>>> t2.pizza_set.count() 
    2
>>> t1.pizza_set.count() 
    1
3 голосов
/ 29 августа 2013

Ваш вопрос связан с: Как считать и отображать объекты в связи ManyToMany в Django

models.py

class Topping(models.Model):
        name = models.CharField(max_length = 20)

class Pizza(models.Model):
        name = models.CharField(max_length = 20)
        toppings = models.ManyToManyField(Topping)

python manage.py shell

>>> for topping in Topping.objects.all():
...     print topping.name, topping.pizza_set.count()
...