'Model'对象不可迭代

时间:2013-02-15 21:39:49

标签: python django

在作者模型中:

century = models.ManyToManyField(Century)

在视图中:

a = get_object_or_404(Author.objects, id=id)

s = Author.objects.filter(century__in=a).order_by('?')[:3]

错误:

  

异常值:'作者'对象不可迭代

怎么了?作者可能属于两个世纪,我希望从他的世纪/世纪中获得3位随机作者。

2 个答案:

答案 0 :(得分:6)

a = get_object_or_404(Author.objects, id=id)

s = Author.objects.filter(century__in=a.century.all()).order_by('?')[:3]

答案 1 :(得分:3)

get_object_or_404()作为第一个arg。 e.g。

a = get_object_or_404(Author, id=id)

评论更新:

在文档的任何地方都没有提到,但你是对的。事实上,查看代码(django/shortcuts/__init__.py)表明get_object_or_404()get_list_or_404()可以为他们的第一个arg采用Model,Manager或QuerySet。

咦。你每天都学到东西!