Регистрация клиентов не отображается в админке django

Пытаюсь создать форму регистрации клиентов для сайта электронной коммерции. Ошибок при отправке формы нет, но данные не отображаются в админке django. Вот необходимые коды :

models.py

class Customer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    full_name = models.CharField(max_length=200)
    address = models.CharField(max_length=200, null=True, blank=True)
    joined_on = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.full_name

urls.py

urlpatterns = [path("register",views.register, name="register")]

forms.py

class CustomerRegistrationForm(forms.ModelForm):
    username = forms.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())
    email = forms.CharField(widget=forms.EmailInput())

    class Meta:
        model = Customer
        fields = ["username", "password", "email", "full_name", "address"]

    def clean_username(self):
        uname = self.cleaned_data.get("username")
        if User.objects.filter(username=uname).exists():
            raise forms.ValidationError(
                "Customer with this username already exists.")

        return uname

views.py

def register(request):
    form = CustomerRegistrationForm(request.POST or None)
    if form.is_valid():
     username = form.cleaned_data.get("username")
     password = form.cleaned_data.get("password")
     email = form.cleaned_data.get("email")
     user = User.objects.create_user(username, email, password)
     form.instance.user = user
     return redirect("/")

    return render(request,"register.html",{'form':form})

register.html

    {% load crispy_forms_tags %} 
 <div class="container">
    <div class="row">
        <div class="col-md-6 mx-auto">
            <h3>Customer Registration Form</h3><hr>
            <form action="" method="POST">
                {% csrf_token %}
                {{form|crispy}}
                <button class="btn btn-primary" >Register as a Customer</button>
            </form>
            <p> Already have an account? <a href="/home">Login here</a></p>
        </div>
    </div>
 </div>

Заранее спасибо:)

В вашем представлении вы создаете Users, а не Customers.

Если вы начинаете новый проект, я бы предложил использовать пользовательскую модель.

Если это невозможно, нужно сначала сохранить форму, чтобы создать экземпляр Customer, а затем связать его с соответствующей моделью User:

def register(request):
    form = CustomerRegistrationForm(request.POST or None)
    if form.is_valid():
     username = form.cleaned_data.get("username")
     password = form.cleaned_data.get("password")
     email = form.cleaned_data.get("email")
     customer = form.save(commit=False)
     user = User.objects.create_user(username, email, password)
     customer.user = user
     customer.save()
     form.instance.user = user
     return redirect("/")

    return render(request,"register.html",{'form':form})
Вернуться на верх