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()
結論
相応のものには相応の取り出し方がある