Model' 对象不可迭代
在作者模型中:
century = models.ManyToManyField(Century)
在视图中:
a = get_object_or_404(Author.objects, id=id)
s = Author.objects.filter(century__in=a).order_by('?')[:3]
错误信息:
异常值:'Author'对象不可迭代
出什么问题了?这个作者可能属于两个世纪,我想从他的世纪/世纪中随机获取3个作者。
2 个回答
3
get_object_or_404()
这个函数的第一个参数是一个 类,比如说:
a = get_object_or_404(Author, id=id)
关于评论的更新:
在文档里没有提到这一点,但你说得对。实际上,查看代码(django/shortcuts/__init__.py
)可以发现,get_object_or_404()
和 get_list_or_404()
的第一个参数可以是一个模型、一个管理器,或者一个查询集。
真有意思,每天都能学到新东西!
6
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,你可能希望在用户输入错误时,程序能够给出提示,或者在某个数据加载完成后,执行下一步操作。
为了实现这些功能,我们通常会使用“条件语句”。简单来说,条件语句就像是一个判断的开关,它会根据你设定的条件来决定接下来要做什么。
举个例子,如果你想检查一个数字是否大于10,你可以写一个条件语句来判断。如果这个数字确实大于10,程序就会执行你设定的操作;如果不是,程序就会执行另一种操作。
这种方式让我们的程序变得更加灵活,可以根据不同的情况做出不同的反应。
a = get_object_or_404(Author.objects, id=id)
s = Author.objects.filter(century__in=a.century.all()).order_by('?')[:3]