Аргумент _reverse_with_prefix () после * должен быть итеративным, а не int - PullRequest
0 голосов
/ 30 сентября 2018

Я использовал 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>')

...
...

1 Ответ

0 голосов
/ 30 сентября 2018

Как уже упоминалось в этом комментарии , добавление запятой в конец кортежа args исправляет это.

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

(Как уже упоминалось в в этом ответе SO , для одноэлементных кортежей требуется однозначная запятая для определения однозначного определения кортежа или выражения, заключенного в скобки)

В качестве альтернативы, как упомянуто в документах , использование списка будет работать нормально:

scores_url = reverse('get_scores', args=[obj.pk])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...