Количество записей в представлении списка - PullRequest
0 голосов
/ 14 июня 2010

У меня есть две модели:

class CommonVehicle(models.Model):
   year = models.ForeignKey(Year)
   series = models.ForeignKey(Series)
   engine = models.ForeignKey(Engine)
   body_style = models.ForeignKey(BodyStyle)
   ...

class Vehicle(models.Model):    
   objects = VehicleManager()
   stock_number = models.CharField(max_length=6, blank=False)
   vin = models.CharField(max_length=17, blank=False)
   common_vehicle = models.ForeignKey(CommonVehicle)
   ....

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

Обновление 1 Я думал, что-то вроде этого может работать:

related_count = 0
for vehicle in vehicles:
    related_count += Vehicle.objects.filter(common_vehicle=vehicle).count()

Ответы [ 3 ]

2 голосов
/ 14 июня 2010
somecommonvehicle.vehicle_set.count()
0 голосов
/ 15 июня 2010

Установлено, что вопрос тесно связан с: этим

Я должен сделать это:

vehicles = CommonVehicle.objects.annotate(related_count=Count('vehicle')).all()

Затем в шаблоне, где будет отображаться счет:

{% for vehicle in vehicles %}
   ...
   {{ vehicle.related_count }}
   ...
{% endfor %}
0 голосов
/ 14 июня 2010

В настоящее время я занимаюсь разработкой приложения django, целью которого является решение проблемы такого рода:

https://code.google.com/p/django-cube/

Документация устарела, так как я постоянно изменяюкод (пока ... это только начало проекта).Вот код, который вы бы использовали:

cube = Cube(['common_vehicle'], Vehicle.objects.all(), len)

Вы можете выполнить итерации по кубу для получения всех подсчетов для всех возможных CommonVehicle s:

for coords, value in cube.iteritems():
    #will print <CommonVehicule unicode representation> <count for this common vehicule>
    print coords.common_vehicule, measure

Или напрямуюколичество для CommonVehicule:

cube[Coords(common_vehicle=a_common_veh)]

Множество других интересных функций доступно (будет) ...

PS : приложение позволяетсоздавать многомерные агрегаты через набор запросов django, стиль OLAP ... Cube(['common_vehicle'], Vehicle.objects.all(), len) фактически представляет куб, размеры которого ['common_vehicle'], базовый набор запросов Vehicle.objects.all() и функция агрегирования len.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...