2010-04-01 3 views
0

В моделях есть много многих областях, как,Запрашивание многих многих полей в Джанго

из emp.models импорта Name

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 

Теперь, когда я хочу, чтобы запросить конкретный идентификатор сказать, напр:

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

как запрос должен быть, чтобы получить имя

спасибо ..

ответ

3

info.name является ManyToManyField так что если вы хотите, чтобы все Name объектов, связанных с ним вы должны использовать метод .all() на нем. Только тогда вы получите список (QuerySet) из 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) и является список какого-то рода. Если вы фильтруете один идентификатор, вы должны сначала использовать objects.get (** kwargs), и он вернет этот конкретный экземпляр Info вместо QuerySet.

Смежные вопросы