From dcc987c27503ebbb9524f5c94c74a6913794b629 Mon Sep 17 00:00:00 2001
From: anthef <anthonyef09@gmail.com>
Date: Tue, 18 Mar 2025 11:16:22 +0700
Subject: [PATCH] fix integrity error

---
 main/models.py |  1 -
 main/views.py  | 12 +++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/main/models.py b/main/models.py
index a1b6ff3..e06359f 100644
--- a/main/models.py
+++ b/main/models.py
@@ -6,7 +6,6 @@ class CustomUser(AbstractUser):
 
     USERNAME_FIELD = "email"
     REQUIRED_FIELDS = ["name"]
-
     email = models.EmailField(primary_key=True, unique=True)
     name = models.CharField(max_length=255, null=False)
     birth_date = models.DateField(null=False)
diff --git a/main/views.py b/main/views.py
index 3de629e..1a29ce2 100644
--- a/main/views.py
+++ b/main/views.py
@@ -1,3 +1,4 @@
+from django.db import IntegrityError
 from django.shortcuts import render, redirect
 from .forms import UserForm
 from .models import CustomUser
@@ -7,8 +8,8 @@ def user_form_view(request):
         form = UserForm(request.POST)
         if form.is_valid():
             user = CustomUser(
-                email=form.cleaned_data['email'],
                 name=form.cleaned_data['name'],
+                email=form.cleaned_data['email'],
                 birth_date=form.cleaned_data['birth_date'],
                 phone_number=form.cleaned_data['phone_number'],
                 blog_url=form.cleaned_data['blog_url'],
@@ -18,8 +19,13 @@ def user_form_view(request):
             )
             
             user.set_password(form.cleaned_data['password'])
-            user.save()
-            return render(request, 'user_result.html', {'data': form.cleaned_data})
+            
+            try:
+                user.save()
+                return render(request, 'user_result.html', {'data': form.cleaned_data})
+            except IntegrityError:
+                form.add_error('name', 'This email is already taken. Please choose another one.')
+                return render(request, 'user_form.html', {'form': form})
         else:
             return render(request, 'user_form.html', {'form': form})
     else:
-- 
GitLab