2015-02-11 47 views
2

我在不同的ServicePlaces中有許多不同價格的標準服務。Django ManyToManyField和其他類的值

我的models.py:

class Service(models.Model): 
    service = models.CharField(max_length=200, unique=True) 

class ServicePlace(models.Model): 
    place = models.CharField(max_length=200, unique=True) 
    #what services are provided in this ServicePlace: 
    service = models.ManyToManyField('Service') 

class Price(models.Model): 
    price = models.DecimalField(max_digits=6, decimal_places=2) 
    service = models.ForeignKey("Service") 
    place = models.ForeignKey("Place") 

我怎樣才能得到所有服務,價格爲ServicePlace X?

回答

1

對不起,愚蠢的問題。答案是在Django manual

0

你必須從ServicePlace到服務有直接的關係,所以你可以遵循:

services = service_place_x.service.all() 

(請注意您的service場是名不副實的,因爲它是指多個對象,所以它可能應該是。所謂services

從那裏,你可以直接進入價格上的每個服務:

for service in services: 
    price = service.price 

這雖然會帶來在每次迭代一個額外的數據庫命中,所以你可能想在原來的查詢中使用select_related

services = service_place_x.service.all().select_related('price') 
+0

此代碼簡化版,在服務工作 '服務:價格= service.price' (AttributeError的: '服務' 的對象有沒有屬性 '價格'): – whip 2015-02-11 12:47:58