2012-04-27 5 views
0

나는 백신, 국가, 질병 및 의약품과 같은 모델을 만들고 싶습니다.장고 모델의 구조

질병은 N 국가 있는 의학 치료 N 질환 백신은 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를에서/백신/seek/countryId/3 'ManyRelatedManager'개체에 'id'속성이 없습니다.

그래서 country_id에서 백신 목록으로 이동하려면 어떻게해야합니까?

답변

0

나는 당신이 거기에 가고 있다는 것을 알지 못합니다.

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

아, 그렇게 쉬웠습니다. 고마워요 :) 이것은 제 첫 번째 장고 응용 프로그램입니다. 아직 필터 인수를 머리에 감싸지 않았습니다. – dutt

관련 문제