Как преобразовать представление на основе функции в представление на основе класса Generic для двух моделей
я создаю представление регистра как основанное на функциях, но я хочу использовать общий класс, чтобы лучше улучшить мой код.
это моя models.py
from django.db import models
from django.contrib.auth.models import User
class UserRegister(models.Model):
reg_user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='user')
mobile = models.CharField(max_length=255, verbose_name='mobile phone number : ', unique=True)
name = models.CharField(max_length=255, verbose_name='First Name : ')
family = models.CharField(max_length=255, verbose_name='Last Name : ')
def __str__(self):
return f"{self.mobile} as {self.name}"
then my forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import *
class RegisterForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'first_name', 'email', 'password1', 'password2']
class UserForm(forms.ModelForm):
class Meta:
model = UserRegister
fields = '__all__'
затем я вызвал их обоих в views.py
следующим образом
from django.shortcuts import render, redirect
from django.views.generic import *
from .forms import *
def register(request):
r_form = RegisterForm()
u_form = UserForm()
if request.method == 'POST':
r_form = RegisterForm(request.POST)
u_form = UserForm(request.POST)
if r_form.is_valid() and u_form.is_valid():
user = r_form.save()
u_form = u_form.save(commit=False)
u_form.user = user
u_form.save()
return redirect('main')
else:
r_form = RegisterForm(request.POST)
u_form = UserForm(request.POST)
context = {
'r_form': r_form,
'u_form': u_form
}
return render(request, 'template.html', context)
пример общего класса на основе, который я знаю, хранится только в 1 модели, как
class CreateUserView(CreateView):
model = User
form_class = UserForm
template_name = 'template.html'
def get_success_url(self):
return redirect('main')
кто-нибудь может помочь мне улучшить мой код, пожалуйста?