Во-первых, я расширяю 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)
Мой вопрос:
UPDATE
- Я обновил модель AbstractUser, потому что я забыл добавить имя и фамилию и забыл упомянуть, если я использую allauth
- Я обновил форму с помощью init