заставляете слизняка Django и id работать вместе? - PullRequest
0 голосов
/ 19 октября 2018

Я хочу, чтобы мой URL содержал как id, так и slug, например Stackoverflow, но slug, вероятно, не работает и вместо этого

www.example.com/games/155/far-cry-5

URL-адрес выглядит так

www.example.com/games/155/<bound%20method%20Game.slug%20of%20<Game:%20Far%20Cry%205>>

my models.py:

class Game(models.Model):
    name = models.CharField(max_length=140)

    def slug(self):
        return slugify(self.name)

    def get_absolute_url(self):
        return reverse('core:gamedetail', kwargs={'pk': self.id, 'slug': self.slug})

my views.py:

class GameDetail(DetailView):
    model = Game
    template_name = 'core/game_detail.html'
    context_object_name = 'game_detail'

Мои urls.py:

path('<int:pk>/<slug>', views.GameDetail.as_view(), name='gamedetail')

спасибо

1 Ответ

0 голосов
/ 19 октября 2018

Вызовите метод slug (), чтобы получить значение.

return reverse('core:gamedetail', kwargs={'pk': self.id, 'slug': self.slug()})

Или определите его как свойство класса

@property
def slug(self):
    ...
...