0
我想通过几个新字段扩展Django中的用户模型。之后,我需要创建一个表单,您可以在User模型中注册用户名和密码,也可以在我的自定义模型中注册字段。Django Python处理2种模型1种形式
这是我的自定义用户域模型:
class Gebruiker(models.Model):
id = models.OneToOneField(User, primary_key=True)
voornaam = models.CharField(max_length=100)
achternaam = models.CharField(max_length=100)
email = models.CharField(max_length=300)
gb_datum = models.DateField()
plaats = models.CharField(max_length=52)
postcode = models.CharField(max_length=6)
huisnummer = models.IntegerField()
nfid = models.IntegerField()
hn_toevoeging = models.CharField(max_length=3, blank=True)
def __str__(self):
return self.voornaam + self.achternaam
,这是我的表单视图。在这种形式下,我也想添加Gebruiker模型的字段,同时保留表单的其余部分。我怎样才能做到这一点?
class UserFormView(View):
form_class = UserForm
template_name = 'home/registration_form.html'
# display blank form
def get(self, request):
form = self.form_class(None)
# form = self.form_class(None)
return render(request, self.template_name, {'form': form})
# process form data
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
#cleaned/normalized data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
#returns User objects if credentials are correct
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('home:index')
return render(request, self.template_name, {'form': form})
我forms.py:
from django.contrib.auth.models import User
from django import forms
from .models import Gebruiker
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'email', 'password']
class GebruikerForm(forms.ModelForm):
class Meta:
model = Gebruiker
fields = ('voornaam', 'achternaam')
您能否详细介绍一下我应该应用哪些更改?我是Django的noob,谢谢你的回复 –