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)