0

モデルには、次のような多対多のフィールドがあります。

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 

名前を取得するためのクエリはどのようにすべきですか

ありがとう..

4

2 に答える 2

3

info.nameそのため、それに関連付けられているManyToManyFieldすべてのオブジェクトが必要な場合は、メソッドを使用する必要があります。その場合にのみ、オブジェクトのリスト(クエリセット)を取得します。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
于 2010-04-01T11:19:22.073 に答える
1

Lukaszは正しいですが、ご存知のとおり、を使用info.object.filet(id__in=a)してaが何らかのリストである場合を除いて、IDでフィルタリングすることは意味がありません。単一のIDでフィルタリングする場合は、まずobjects.get(** kwargs)を使用する必要があります。これにより、QuerySetの代わりにその特定のInfoインスタンスが返されます。

于 2010-04-01T17:12:08.900 に答える