я немного по другому делал
Создаём урл через django.core.signing (палить юзер ид в реф ссылке, не есть хорошо)
что-то вроде
signer = signing.Signer()
..
def referral_url(self):
url = reverse('referral_url', kwargs={'ref_data': signer.sign(self.user_id)})
return url
view по типу:
def referral_set(request, ref_data):
try:
user_id = int(signer.unsign(ref_data))
request.session['referred_by'] = user_id
except (ValueError, signing.BadSignature):
messages.warning(request, _(u'Неверная реферальная ссылка'))
return HttpResponseRedirect(reverse('home'))
# форме регистрации в save() получаем user_id
referred_by = request.session.get('referred_by', None)