2013-02-16 3 views
1

Garage.cars: объект гараж имеет FK из машиныКак сравнить списки и получить общие элементы, соответствующие подсчитывать

Person.carwishlst: объект Person имеет FK автомобилей, которые они хотели.

В Django, как я добиваюсь следующий, цикл? ...

Получить общее количество автомобилей х Человек имеет, которые соответствуют те, гаражно имеет.

Результат: т.е. Grange имеет 4 автомобиля вы хотите

гипотетическими, но позволяет сказать Grange модель имеет автомобили FK = models.ManyToManyField (автомобили)

Люди также имеет cars_wishlist FK = модели .ManyToManyField (Автомобили)

+0

Вы должны использовать 'set()': http://docs.python.org/2/library/stdtypes.html#set – Zulu

ответ

3

Если предположить, что cars и carwishlst списки:

Вы бы сделать следующее

def cars_you_want(cars, carwishlst): 
    car_set = [val for val in cars if val in carwishlst] 
    return len(car_set) 

Это должно сделать это.

+0

они прямо из моделей связанных объектов. превратите их в список? – Prometheus

+0

вставьте свои модели в вопрос. – myusuf3

+0

его просто гипотетически, но позволяет сказать, что модель Grange имеет FK cars = models.ManyToManyField (Cars) У человека также есть FK cars_wishlist = models.ManyToManyField (Cars) – Prometheus

0

Garage.cars предположив, что и Person.carwishlist являются списки и содержащиеся в нем автомобили имеют разумный __eq__ метод:

numberOfWishedCarsInGarage = len (set (garageX.cars) & set (personX.carwishlist)) 
+0

Что такое «set»? Я этого раньше не видел, что он делает? – Prometheus

+0

Набор представляет собой набор уникальных предметов. Http://docs.python.org/3.2/library/stdtypes.html#set-types-set-frozenset – Hyperboreus