2013-02-16 77 views
1

Garage.cars:對象車庫擁有汽車如何比較列表,並獲得總匹配項目數

Person.carwishlst的FK對象者有FK車,他們想的

在Django中如何我實現以下,循環?...

獲取汽車X該人的總數量相匹配的那些車庫有哪些。

結果: 即田莊有4臺車,你想

假設,但可以說,田莊模型有一個FK車= models.ManyToManyField(汽車)

人也有一個FK cars_wishlist =模型.ManyToManyField(汽車)

+0

你應該使用'set()':http://docs.python.org/2/library/stdtypes.html#set – Zulu 2013-02-16 17:27:10

回答

3

假設carscarwishlst是列表:

你會做以下

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

應該這樣做。

+0

它們是直接來自相關對象的模型。把它們變成一個列表? – Prometheus 2013-02-16 17:28:18

+0

將你的模型粘貼到問題中 – myusuf3 2013-02-16 17:29:29

+0

它只是假設的,但讓我們說讓格蘭奇模型有一個FK車= models.ManyToManyField(Cars)Person也有一個FK cars_wishlist = models.ManyToManyField(汽車) – Prometheus 2013-02-16 17:33:29

0

假設Garage.carsPerson.carwishlist都列出其包含的車有一個合理的__eq__方法:

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

'set'是什麼?我以前沒有見過,它是做什麼的? – Prometheus 2013-02-16 17:29:21

+0

一組是獨特項目的集合http://docs.python.org/3.2/library/stdtypes.html#set-types-set-frozenset – Hyperboreus 2013-02-16 18:01:48