1.У меня есть несколько пользователей в моем проекте. Я создал одну страницу регистрации. на странице регистрации у меня есть возможность выбрать тип пользователя. На основе выбора должен быть создан связанный профиль, и тип пользователя должен быть зарегистрирован в своей странице профиля .. например .. если тип выбранного пользователя student, то после регистрации должен быть создан файл student_profile, в который должен быть зачислен учащийся .. аналогично для профессиональных и других типов пользователей. Я использовал модель пользователя django auth для создания регистрации.
2. У меня есть много пользовательских форм профиля для каждого типа пользователей, и я не знаю, как его интегрировать .. Модель ниже:
то, что
Пожалуйста, не предлагайте мне эту ссылку, потому что я не хочу использовать этот подход, так как они используют регистрацию для каждого типа пользователя, но у меня есть только одна регистрация для каждого типа пользователя.
https://simpleisbetterthancomplex.com/tutorial/2018/01/18/how-to-implement-multiple-user-types-with-django.html
регистрация пользователя в forms.py:
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(label='Password',
widget=forms.PasswordInput)
password2 = forms.CharField(label='Repeat password',
widget=forms.PasswordInput)
class Meta:
model = User
fields = ('username', 'first_name', 'email')
def clean_password2(self):
cd = self.cleaned_data
if cd['password'] != cd['password2']:
raise forms.ValidationError('Passwords don\'t match.')
return cd['password2']
def clean_email(self):
email = self.cleaned_data.get('email')
username = self.cleaned_data.get('username')
if email and User.objects.filter(email=email).exclude(username=username).exists():
raise forms.ValidationError(u'Email addresses must be unique.')
return email
views.py:
@login_required
def dashboard(request):
# Display all actions by default
actions = Action.objects.exclude(user=request.user)
following_ids = request.user.following.values_list('id',
flat=True)
if following_ids:
# If user is following others, retrieve only their actions
actions = actions.filter(user_id__in=following_ids)
actions = actions.select_related('user', 'user__profile')\
.prefetch_related('target')[:10]
return render(request,
'account/dashboard.html',
{'section': 'dashboard',
'actions': actions})
def register(request):
if request.method == 'POST':
user_form = UserRegistrationForm(request.POST)
if user_form.is_valid():
# Create a new user object but avoid saving it yet
new_user = user_form.save(commit=False)
# Set the chosen password
new_user.set_password(
user_form.cleaned_data['password'])
# Save the User object
new_user.save()
# Create the user profile
Profile.objects.create(user=new_user)
create_action(new_user, 'has created an account')
return render(request,
'account/register_done.html',
{'new_user': new_user})
else:
user_form = UserRegistrationForm()
return render(request,
'account/register.html',
{'user_form': user_form})
Это анкета студента для учебы, учебного заведения, достижений и т. Д. В приложении для учащихся:
# models.py (приложение для студентов):
class student(User):
is_student = models.BooleanField(default=False)
class academic(models.Model):
student = models.OneToOneField(student, on_delete=models.CASCADE, primary_key=True)
add_college=models.ForeignKey(college,db_index=True,on_delete=models.CASCADE)
add_book=models.ForeignKey(book,db_index=True,on_delete=models.CASCADE)
skills=models.CharField(max_length=30)
favourite_subject=models.CharField(max_length=30)
strong_sbject=models.CharField(max_length=30)
weak_subject=models.CharField(max_length=30)
fields_interested=models.CharField(max_length=30)
motivation=models.CharField(max_length=30)
class campus(models.Model):
student=models.OneToOneField(student,on_delete=models.CASCADE,primary_key=True)
endorsement=models.CharField(max_length=50)
membership=models.CharField(max_length=50)
и у нас есть другие формы для целей и достижений ..
так же у меня есть несколько форм профиля для других типов пользователей ..
Теперь мое требование заключается в том, чтобы на основе типа пользователя, выбранного во время регистрации, такого как студент, необходимо было создать профиль студента вместе с вышеупомянутыми формами профилей. Каков наилучший подход ?? я нигде не могу найти правильного решения в интернете .. почесывая голову уже 2 месяца для этой конкретной проблемы .. любое решение должно быть высоко оценено !!