Невозможно добавить дополнительные поля в регистрационную форму django
У меня возникла небольшая проблема. Я хочу создать регистрационную форму для моего сайта, который я создаю с помощью Django, и мне нужны некоторые пользовательские поля, которых нет в встроенной UserCreationForm в Django, и я не могу найти другой способ сделать это, по крайней мере, не на Youtube. Кто-нибудь здесь знает, как это сделать
Была бы большая помощь, если бы любой из вас мог помочь мне с этим Я действительно должен закончить этот сайт быстро
Вот мой код:-
models.py :-
class UserInfo(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
full_name = models.CharField(max_length=200, null=True, blank=True)
username = models.CharField(max_length=200, null=True, blank=True)
email = models.EmailField(max_length=200, null=True, blank=True)
password = models.CharField(max_length=200,null=True, blank=True)
confirm_password = models.CharField(max_length=200, null=True, blank=True)
profile_photo = models.ImageField(null=True, blank=True, upload_to='profile_photo/',
default='profile_photo/default.jpg')
phone_number = models.CharField(max_length=10,null=True, blank=True)
address = models.TextField(null=True, blank=True)
pin_code = models.CharField(null=True, max_length=6, blank=True)
region = models.CharField(null=True, max_length=200, blank=True)
state = models.CharField(null=True, max_length=100, blank=True)
created = models.DateTimeField(auto_now_add=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True,
editable=False)
def __str__(self):
return str(self.username)
forms.py :-
class RegisterForm(forms.ModelForm):
class Meta:
model = UserInfo
exclude = ['user', 'created', 'id', 'profile_photo']
widgets = {
'full_name': forms.TextInput(attrs={'class':'register-textinput input'}),
'username': forms.TextInput(attrs={'class':'register-textinput1 input'}),
'email': forms.EmailInput(attrs={'class':'register-textinput2 input'}),
'phone_number': forms.TextInput(attrs={'class': 'register-textinput3 input'}),
'password': forms.PasswordInput(attrs={'class': 'password-field-textinput input', 'id': 'passwordField'}),
'confirm_password': forms.PasswordInput(attrs={'class': 'password-field-textinput input', 'id': 'cPasswordField'}),
'state': forms.TextInput(attrs={'class': 'register-textinput5 input'}),
'region': forms.TextInput(attrs={'class': 'register-textinput6 input'}),
'address': forms.TextInput(attrs={'class': 'register-textinput7 input'}),
'pin_code': forms.TextInput(attrs={'class': 'register-textinput8 input'}),
}
views.py :-
def register(request):
form = RegisterForm
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.username = user.username.lower()
user.save()
messages.success(request, "User was successfully created")
context = {'form': form}
return render(request, 'user/register.html', context)
html:-
<div>
<div class="register-container">
<div class="header-container">
<h1 class="header-text heading"><span>register</span></h1>
</div>
<div class="register-container01">
<form method="POST">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="submit">
</form>
<div class="register-container19">
<a href="{% url 'login' %}" class="register-navlink imp">
<span>I have an account</span>
</a>
</div>
</div>
</div>