Django模型的结构

时间:2012-04-27 15:18:13

标签: django-models

我得到了我想要建模的东西:疫苗,国家,疾病和药物。

疾病发生在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转到疫苗列表?

1 个答案:

答案 0 :(得分:0)

我不知道你在那里会发生什么。

Vaccine.objects.filter(diseases__country__id=country_id)