web-dev-qa-db-ja.com

*の後の_reverse_with_prefix()引数は、intではなく反復可能でなければなりません

私は過去にDjangoのreverseを複数回使用しましたが、今日このエラーが発生したため、デバッグするには直感的には思えません。

TypeError: _reverse_with_prefix() argument after * must be an iterable, not int

これが私が使用しているビューです:

from Django.urls import reverse

...
...
def show_scores_url(self, obj):
    scores_url = reverse('get_scores', args=(obj.pk))
    return format_html('<a href="' + scores_url + '">Scores</a>')

...
...
9
Anupam

this コメントで述べたように、引数タプルの最後にコンマを置くことで修正されます。

scores_url = reverse('get_scores', args=(obj.pk,))

this SO answer で述べたように、単一アイテムのタプルがタプルまたは括弧で囲まれた式の定義を明確にするためには、末尾のコンマが必要です)

または、 docs で述べたように、リストを使用すると正常に機能します。

scores_url = reverse('get_scores', args=[obj.pk])
10
Anupam