在django中查询多个到多个字段

时间:2010-04-01 11:09:32

标签: python django django-models django-views

在模型中有许多领域,

来自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 

查询应如何获取名称

谢谢..

2 个答案:

答案 0 :(得分: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 :(得分:1)

Lukasz是对的,但只是你知道,除非你使用info.object.filet(id__in=a)并且a是某种类型的列表,否则过滤id是没有意义的。如果您对单个id进行过滤,则首先应该使用objects.get(** kwargs),它将返回该特定的Info实例而不是QuerySet。