ManyToManyFieldでハマった

printして文字列が帰ってきているがそれはdef __unicode__(self):のせいだった

class Tag(models.Model)
    tagname = models.CharField(u'タグ')
        def __unicode__(self):
        return self.tagname
...
class Thread(models.Model)
    tags = models.ManyToManyField(Tag)

printデバッグをしていて「あれー文字列なのになんで配列に変換できないんだろーおかしいなー」とおもってたら、そもそもでした。

type(tagname)

ManyToManyFieldからなんかとりだしたかった

これみよう::クエリを生成する — Django v1.0 documentation
で、こうなった(以下views.py)

tag = Tag.objects.get(tagname=tagname)
tag = tag.thread_set.all()

結論

相応のものには相応の取り出し方がある