【问题标题】:Querying many to many fields in django在 django 中查询多对多字段
【发布时间】:2010-04-01 11:09:32
【问题描述】:

在模型中有很多字段,

从 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 

查询应该如何得到名字

谢谢..

【问题讨论】:

    标签: python django django-models django-views


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        • 2013-05-17
        • 2021-12-22
        • 2011-04-07
        相关资源
        最近更新 更多