У меня есть 2 модели профиля (Profile1 и Profile 2) с отношением один к одному с классом django User. У меня есть 2 отдельные регистрационные формы, 2 разных сигнала, 2 разных вида / маршрута для каждой модели. Когда я регистрирую пользователя в Profile1, он создает экземпляр Profile1, но также создает экземпляр Profile2. Как я могу указать сигнал для использования в зависимости от типа регистрации пользователя?
Вот мой signal.py для Profile1
@receiver(post_save, sender=User)
def create_profile1(sender, instance, created, **kwargs):
if created:
Profile1.objects.create(customer=instance)
@receiver(post_save, sender=User)
def save_profile1(sender, instance, created, **kwargs):
instance.profile1.save()
Вот мой signal.py для Profile2
@receiver(post_save, sender=User)
def create_profile2(sender, instance, created, **kwargs):
if created:
Profile2.objects.create(customer=instance)
@receiver(post_save, sender=User)
def save_profile2(sender, instance, created, **kwargs):
instance.profile2.save()
Ниже представлены 2 вида из отдельных файлов вида
# view for registration of Profile1
def register(request):
if request.method == 'POST':
u_form = RegisterForm(request.POST)
p_form = ProfileRegisterForm(request.POST)
if u_form.is_valid() and p_form.is_valid():
user = u_form.save()
user.refresh_from_db()
p_form = ProfileRegisterForm(request.POST,
instance=user.profile1)
p_form.full_clean()
p_form.save()
messages.success(request, 'Your account has been created!')
return redirect('profile1_login')
else:
u_form = RegisterForm()
p_form = ProfileRegisterForm()
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'profile1/register.html', context)
# view for registration of Profile2
def register(request):
if request.method == 'POST':
u_form = RegisterForm(request.POST)
p_form = ProfileRegisterForm(request.POST)
if u_form.is_valid() and p_form.is_valid():
user = u_form.save()
user.refresh_from_db()
p_form = ProfileRegisterForm(request.POST,
instance=user.profile2)
p_form.full_clean() )
p_form.save()
messages.success(request, 'Your account has been created!')
return redirect('profile2_login')
else:
u_form = RegisterForm()
p_form = ProfileRegisterForm()
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'profile2/register.html', context)