我有我想要建模的东西:疫苗、国家、疾病和药物。
一种疾病在 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 'ManyRelatedManager' 对象的 AttributeError 没有属性 'id'。
那么如何从 country_id 转到疫苗列表?