get_absolute_url con parámetros

Mis urls.py :

 urlpatterns = [ ... url(r'^profile/$', profile.profile, name='profile'), ] 

Mi model

 class Reg(models.Model): name = models.CharField(max_length=32, primary_key=True) user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name='%(app_label)s_%(class)s_reg', null=True) ... def get_absolute_url(self): return reverse('core:profile', ???) 

Mis views :

 @login_required def profile(request): context_dict = {} u = User.objects.get(username=request.user) context_dict['user'] = u r = reg.Reg.objects.get(user=u) context_dict['reg'] = r return render(request, 'core/reg.html', context_dict) 

¿Es posible usar get_absolute_url para ver diferentes perfiles? Por ejemplo, desde / admin cuando mira el perfil “John”, hace clic en “ver en el sitio” y obtiene la página de perfil con los datos de John, no los suyos.

Sus vistas deben poder aceptar un argumento adicional, preferiblemente el ID de usuario, ya que los nombres generalmente contienen espacios:

 from django.shortcuts import get_object_or_404 @login_required def profile(request, user_id): context_dict = {} u = get_object_or_404(User, pk=user_id) context_dict['user'] = u r = reg.Reg.objects.get(user=u) context_dict['reg'] = r return render(request, 'core/reg.html', context_dict) 

Entonces tu urls.py convierte en:

 urlpatterns = [ ... url(r'^profile/(?P[0-9]+)/$', profile.profile, name='profile'), ] 

Y finalmente, su models.py y el método get_absolute_url :

 class Reg(models.Model): name = models.CharField(max_length=32, primary_key=True) user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name='%(app_label)s_%(class)s_reg', null=True) ... def get_absolute_url(self): return reverse('core:profile', user_id=self.id)