2

作成者モデル:

century = models.ManyToManyField(Century)

ビューで:

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

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

エラー:

例外値: 'Author' オブジェクトは反復可能ではありません

どうしたの?著者は 2 世紀に属している可能性があり、その世紀から 3 人のランダムな著者を取得したいと考えています。

4

2 に答える 2

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

s = Author.objects.filter(century__in=a.century.all()).order_by('?')[:3]
于 2013-02-15T21:45:36.747 に答える
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()の両方が最初の引数に Model、Manager、または QuerySet を使用できることがわかります。

は。あなたは毎日何かを学びます!

于 2013-02-15T21:47:15.093 に答える