【发布时间】:2020-08-01 15:34:41
【问题描述】:
首先,我像这样扩展 AbstractUser:
class MyProfile(AbstractUser):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
full_name = models.CharField(max_length=255)
id_number = models.CharField(max_length=14)
def __str__(self):
return self.full_name
def save(self, *args, **kwargs):
self.full_name = '{0} {1}'.format(self.first_name, self.last_name)
super().save(*args, **kwargs)
然后像这样引用其他模型:
class MyModel(models.Model):
member = models.OneToOneField(MyProfile, on_delete=models.CASCADE)
description = models.CharField(max_length=255)
def __str__(self):
return self.member
这个形式:
class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
model = MyModel
fields = ('description')
full_name = forms.CharField(required=False, label="", widget=forms.TextInput(attrs={'class': "form-control"}))
id_number = forms.CharField(required=False, label="", widget=forms.TextInput(attrs={'class': "form-control"}))
description = forms.CharField(required=False, label="", widget=forms.TextInput(attrs={'class': "form-control"}))
这是视图:
def applicationdata(request):
if request.method == 'POST':
form = MyModelForm(request.POST or None)
if form.is_valid():
form.save()
return HttpResponseRedirect('/index/')
else:
print(form.errors)
else:
form = MyModelForm()
context = {
'form': form,
}
return render(request, 'index.html', context)
我的问题是:
如何在 MyModelForm 上显示 full_name 的字段和 id_number 的字段而不是 member 的字段?
以及如何通过 applicationdata 的视图将这些字段保存到 MyModel 模型中的 member 字段中?
更新
- 我更新了 AbstractUser 模型,因为我忘记添加 first_name 和 last_name 并且忘记提及是否使用 allauth
- 我用 init 更新了表单
【问题讨论】:
标签: django