2010-04-01 90 views
0

在模型有一个多对多的领域,查询许多人在Django许多领域

从emp.models导入名称

def info(request): 
    name = models.ManyToManyField(Name) 

而且在emp.models架构是

class Name(models.Model): 
     name = models.CharField(max_length=512) 


     def __unicode__(self): 
      return self.name 

现在,当我想查询一个特定的ID为前说:

  info= info.objects.filter(id=a) 
     for i in info: 
       logging.debug(i.name) //gives an error 

应该如何查询是得到名字

谢谢..

回答

3

info.nameManyToManyField所以,如果你想用它相关联的所有Name对象,你必须使用.all()方法就可以了。只有这样,你会得到Name对象的列表(查询集):

info_list = info.objects.filter(id=a) 
for info_object in info_list: 
    for name_object in info_object.name.all(): 
     print name_object.name 
1

卢卡斯是正确的,但只是让你知道,这没有任何意义,除非你使用info.object.filet(id__in=a)上的编号进行筛选,并且是某种列表。如果你过滤一个id,你首先应该使用objects.get(** kwargs),并且它将返回该特定的Info实例而不是QuerySet。