Django UpdateView get_success_url не возвращается на страницу профиля

Я еще новичок в django и столкнулся с этой проблемой, ситуация такая, у меня есть модель профиля, на которой есть 2 представления ViewProfile и EditProfile, наследующие от DetailView и UpdateView соответственно. когда я редактирую страницу профиля, она не переводит меня на страницу профиля, вместо этого она выдает ошибку:

Reverse for 'profile' with keyword arguments '{'id': 9}' not found. 1 pattern(s) tried: ['profile/(?P<pk>[^/]+)/\\Z']

хотя я проверил в оболочке python, профиль с id:9 действительно является профилем с именем muham см. ниже

>>> Profile.objects.all()
<QuerySet [<Profile: huzaifa>, <Profile: another1>, <Profile: muham>]>
>>> p1 = Profile.objects.get(name='muham')
>>> p1.id
9
>>> 

но он все равно не отображается, Я переопределил get_success_url, чтобы перевести меня на страницу профиля:

class EditProfile(LoginRequiredMixin, UpdateView):
    model = Profile
    fields = ('name', 'address', 'phone_no',)
    template_name = 'blog_app/edit_profile.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['user'] = self.request.user
        return context
    
    def get_success_url(self):
        id = self.request.user.profile.id
        return reverse_lazy('profile', kwargs={'id': id})  

Моя модель ниже:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
    name = models.CharField(max_length=60, blank=True, null=True)
    address = models.CharField(max_length=400, null=True, blank=True)
    # image
    phone_no = models.CharField(max_length=40, null=True, blank=True)
    
    def __str__(self):
        return str(self.user)

Я нашел свою ошибку, это было потому, что DetailView использует pk или slug, в аргументах urlconf, и прежде я добавил str:id вместо str:pk, и также в

def get_success_url(self):
    id = self.request.user.profile.id
    return reverse_lazy('profile', kwargs={'id': id})  

у меня было kwargs={'id':id} вместо {"pk": id}. так что это была моя проблема, и она была решена после этого.

Вернуться на верх