2010-04-01 55 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。