[Answered ]-Does django's URL Conf support mapping an argument to strings?

2๐Ÿ‘

โœ…

I would change the field to a CharField, and use the URL slug as the actual value rather than the display value:

Class Album(models.Model):
    ALBUM_TYPE_SINGLE = 'singles'
    ALBUM_TYPE_DEMO = 'demos'
    ALBUM_TYPE_GREATEST_HITS = 'greatest-hits'
    ALBUM_CHOICES = (
        (ALBUM_TYPE_SINGLE, 'Single Record'),
        (ALBUM_TYPE_DEMO, 'Demo Album'),
        (ALBUM_TYPE_GREATEST_HITS, 'Greatest Hits'),
    )
    album_type = models.CharField(choices=ALBUM_CHOICES, max_length=50)

In your urls.py:

urlpatterns = [
    url(r'^(?P<type>singles|demos|greatest-hits)/(?P<pk>.+)/$', views.AlbumView, name="albums"),
]

Then you can reverse it by passing album.album_type:

reverse('albums', args=(album.album_type, album.pk))
๐Ÿ‘คknbk

Leave a comment