2012-04-27 19 views
0

模型我有事情,我想型號:疫苗,國家,疾病和藥品。結構在Django

一個疾病的N個國家 一種藥物,治癒疾病ň一個 疫苗預防的疾病ň

我的主要搜索方法將是國家,通過疾病連接上市疫苗和藥物。

我想我會通過這種模式做到這一點:

class Country(models.Model): 
name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 

class Disease(models.Model): 
    name = models.CharField(max_length=100) 
    country = models.ManyToManyField(Country) 
    def __unicode__(self): 
     return self.name 

class Vaccine(models.Model): 
    name = models.CharField(max_length=100) 
    diseases = models.ManyToManyField(Disease, blank=True) 
    def __unicode__(self): 
     return self.name 

class Medicine(models.Model): 
    name = models.CharField(max_length=100, blank=True) 
    diseases = models.ManyToManyField(Disease, blank=True) 
    def __unicode__(self): 
     return self.name 

我搜索這樣的:

def vacc_for_country(request, country_id): 
    diseases = Disease.objects.filter(countries__pk=country_id) 
    vaccines = Vaccine.objects.filter(id__in=[d.id for d in [v.diseases for v in Vaccine.objects.all()]]) 
    return serialize(vaccines) 

,但不工作,我得到:AttributeError的AT /疫苗/求/ countryId/3 'ManyRelatedManager' 對象沒有屬性的 'id'。

那麼,如何從COUNTRY_ID到疫苗的名單?

回答

0

我不知道你所追求的在那裏。

Vaccine.objects.filter(diseases__country__id=country_id) 
+0

哦,那就這麼簡單。非常感謝:)這是我的第一個Django的應用程序,沒有包裹着我周圍的過濾器參數頭呢。 – dutt 2012-04-27 15:27:00