2012-04-27 10 views
0

私がモデルにしたいもの:ワクチン、国、病気と薬を持っています。Djangoのモデルの構造

疾患は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

ああ、それは簡単でした。ありがとう:)これは私の最初のDjango-appであり、まだフィルタ引数の周りに私の頭を包んでいません。 – dutt

関連する問題