[英]Django admin - How can I add the green plus sign for Many-to-many Field in custom admin form
[英]How can I add custom fields when creating a sign up form using Django form?
我是 Django 和 Python 的初学者,但我正在尝试创建一个相对简单的 web 应用程序,我似乎遇到了一些障碍。
我想在我的 Django UserCreationForm 中添加自定义字段,例如名字、姓氏、email 和 ID 号? 我应该创建一个单独的配置文件 model 吗?如果是,我应该怎么做,或者有其他方法可以实现吗?
就像我说的,我是一个初学者,所以我会尽可能详细地欣赏!
对于名字、姓氏和 email 字段,您无需执行任何操作。 但是对于ID我建议你单独创建一个model,其实很简单!
模型.py
from django.contrib.auth.models import User
class IdNumber(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
id_number = models.TextField(max_length=9)
forms.py
from django.contrib.auth.models import User
class SignUpForm(forms.ModelForm):
id_number = forms.CharField(max_length=9, required=True)
password = forms.CharField(max_length=15, required=True)
password_confirm = forms.CharField(max_length=15, required=True)
class Meta:
model = User
fields = ['first_name', 'last_name', 'email', 'username', 'password']
def clean(self):
cleaned_data = super(SignUpForm, self).clean()
password = cleaned_data.get('password')
password_confirm = cleaned_data.get('password_confirm')
if password != password_confirm:
raise forms.ValidationError('Passwords do not match!')
视图.py
from .models import IdNumber
from .forms import SignUpForm
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
username = form.cleaned_data['username']
password = form.cleaned_data['password']
id_number = form.cleaned_data['id_number']
user.set_password(password)
id_model = IdNumber(user.id)
id_model.user = user
id_model.id_number = id_number
id_model.save()
form.save()
return HttpResponseRedirect('some_url')
else:
return render(request, 'your_app/your_template.html', {'form': form})
else:
form = SignUpForm()
return render(request, 'your_app/your_template.html', {'form': form}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.