LinkColum с urlencode () - PullRequest
       17

LinkColum с urlencode ()

0 голосов
/ 22 января 2019

У меня есть LinkColum, как это:

artist = tables.LinkColumn('artist_detail', args=[A('artist')],

К сожалению, есть художники, которые имеют специальные символы, такие как косая черта, и нарушают Django-URL-систему.

Reverse for 'artist_detail' with arguments '('Paul Ray Featuring 33 1/3',)' not found. 1 pattern(s) tried: ['artists\\/(?P<artist>[^/]+)$']

Я пытался инкапсулировать A('artist') с django.utils.http.urlencode(), но, к сожалению, это не работает.

Есть ли способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

django-tables2 просто передает их на django.urls.reverse django. Нет URL-адреса, соответствующего переданному вами значению, поэтому вам придется изменить переданное вами значение.

Один из способов добиться этого - добавить метод в вашу модель, предоставив версию имени urlencode d, и указать этот метод в методе доступа.

В качестве альтернативы вы можете реализовать метод get_absolute_url в вашей модели и выполнить urlencode там. Затем вы можете использовать

 artist = tables.Column(linkify=true)

Я предпочитаю последнее.

0 голосов
/ 22 января 2019

Согласно документам вы должны использовать обычный столбец и использовать параметр linkify.

artist = tables.Column(linkify=("artist_detail", (tables.A("artist.pk"), )))
...