Django. Как сделать ссылку на профиль по username, а не по Pk

Я хочу, чтобы ссылка на профиль выглядела следующим образом: .../profile/, сейчас она выглядит так .../profile/<user_id>

Вот мой код: views.py

class ShowProfilePageView(DetailView):
    model = Profile
    template_name = 'my_profile/profile.html'
    def get_context_data(self, *args, **kwargs):
        context = super(ShowProfilePageView, self).get_context_data(*args, **kwargs)
        page_user = get_object_or_404(Profile, id=self.kwargs['pk'])
        context['page_user'] = page_user
        return context

urls.py

urlpatterns = [
    path('', views.index),
    path('main', views.index, name='main'),
    path('registration', views.reg_user, name='reg'),
    path('login', views.login_request, name='login'),
    path('exit', authViews.LogoutView.as_view(next_page='main'), name='exit'),
    path('profile/<int:pk>', views.ShowProfilePageView.as_view(), name='user_profile'),
]

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    bio = models.TextField(null=True, blank=True)
    profile_pic = models.ImageField(null=True, blank=True, upload_to='images/profile/')
    skills = models.TextField(null=True, blank=True)
    city = models.TextField(null=True, blank=True)
    age = models.TextField(null=True, blank=True)
    sex = models.TextField(null=True, blank=True)


    def __str__(self):
        return str(self.user)
Вернуться на верх