Объединение форм 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()

Если вам нужно что-то еще, пожалуйста, укажите это.

Вернуться на верх