Объединение форм UserModel и Model Form
Я создал пользовательскую модель UserModel, используя поле один-к-одному. Я предоставил сигнал для создания модели, когда пользователь создан.Что я могу сделать, чтобы собрать остальную информацию вместе с полями пользовательской модели.
Вот мой код:
#models.py
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
import datetime
from django.core.validators import MaxValueValidator, MinValueValidator
from django.contrib.auth.models import User
from twilio.rest import Client
# Create your models here.
class Customer(models.Model):
customer = models.OneToOneField(User, null=True,blank=True,on_delete=models.CASCADE)
first_name=models.CharField(blank=True,max_length=100, null=True)
last_name=models.CharField(blank=True,max_length=100,null=True)
address = models.TextField(blank=True,null=True)
contact_no = PhoneNumberField(blank=True,null=True)
email = models.EmailField(blank=True,null=True)
operator = models.ForeignKey(User,related_name='Operator_name', null=True,blank=True, on_delete=models.CASCADE)
def __str__(self):
return str(self.customer.username)
#views.py
@login_required(login_url='login')
@allowed_user(allowed_roles=['operator'])
def registerPage(request):
form = CreateCustomerForm()
if request.method == 'POST' :
form = CreateCustomerForm(request.POST)
if form.is_valid():
form.save()
return redirect('customer_detail')
context = {'form':form}
return render(request,'operator_app/register.html',context)
#Это представление ниже было использовано для создания модели, прежде чем я присоединил UserModel
@login_required(login_url='login')
@allowed_user(allowed_roles=['operator'])
def customer_create(request):
form= CustomerForm()
if request.method == 'POST':
form = CustomerForm(request.POST)
if form.is_valid():
form.save()
first_name = form.cleaned_data.get('first_name')
last_name = form.cleaned_data.get('last_name')
messages.success(request, f'Account Created of { first_name } { last_name }!')
return redirect('customer_detail')
else:
form = CustomerForm()
context={'form':form}
return render(request,'operator_app/customer_create.html',context)
#forms.py
from django.forms import ModelForm
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from .models import Customer, Payment
class CustomerForm(ModelForm):
class Meta:
model= Customer
fields = '__all__'
class PaymentEntryForm(ModelForm):
class Meta:
model = Payment
fields = '__all__'
class CreateCustomerForm(UserCreationForm):
class Meta:
model= User
fields = ['username', 'password1','password2',]
#signals.py
from ast import operator
from urllib import request
from django.dispatch import receiver
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from .models import Customer
@receiver(post_save,sender=User)
def customer_profile(sender, instance, created, **kwargs):
if created:
group = Group.objects.get(name='cable_customer')
instance.groups.add(group)
Customer.objects.create(
customer=instance,
)
instance.customer.save()
Если вам нужно что-то еще, пожалуйста, укажите это.