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)

しかし、それは機能しません。次のようになります。/vaccines/seek/countryId/3のAttributeError'ManyRelatedManager'オブジェクトには属性'id'がありません。

では、country_idからワクチンのリストに移動するにはどうすればよいですか?

4

1 に答える 1

0

私はあなたがそこで何をしようとしていたのか分かりません。

Vaccine.objects.filter(diseases__country__id=country_id)
于 2012-04-27T15:22:41.497 に答える