Wednesday, June 5, 2019

Re: While registering the user with django form, it gives "UNIQUE constraint failed: auth_user.username" error

I wrote a python script to easily reset a django project. I hope it helps you.
Just put it in the folder where manage.py file is and run it.


import os
import shutil

from pprint import pprint


folders = []
base_dir = os.path.dirname(os.path.realpath(__file__))


def get_directory_list():
global folders
global base_dir

for root, d_names, f_names in os.walk(base_dir):
for name in d_names:
folders.append(os.path.join(root, name))
folders = sorted(folders)
return folders


def delete_pycache():
global folders

for folder in folders:
if folder.endswith("__pycache__"):
shutil.rmtree(folder)

print("All __pycache__ files deleted.")
return None


def delete_migrations():
global folders

for folder in folders:
if folder.endswith("migrations"):
for item in os.listdir(folder):
if not item.endswith("__init__.py"):
os.remove(os.path.join(folder, item))

print("All migration files deleted.")
return None


def delete_sqlite3():
global base_dir
db_file = os.path.join(base_dir, "default.sqlite3")
if os.path.exists(db_file):
os.remove(db_file)


def main():
global folders

try:
get_directory_list()
delete_pycache()
delete_migrations()
delete_sqlite3()
print("All operations performed successfully.")
except Exception as e:
print("There was some error")


if __name__ == "__main__":
main()


Regards,
Chetan Ganji
+91-900-483-4183


On Wed, Jun 5, 2019 at 6:29 PM Chandrashekhar Singh <chandrashekhar721@gmail.com> wrote:
Better will be, delete all migrations, and again migrate

On Fri, May 17, 2019, 12:51 PM RAJENDRA MYTHILI 17BIS0120 <rajendra.mythili2017@vitstudent.ac.in> wrote:
I'm facing the same issue ... Did you figure out what's wrong?

On Saturday, October 6, 2018 at 6:28:09 AM UTC-7, Jaydeep Borkar wrote:
When I try to register a user using Django form, it gives me "UNIQUE constraint failed: auth_user.username". When I tried registering the first user, it worked, but I couldn't see that entry in my database. When I tried registering the second user, it's giving me this error. Please, help me through this. I have spent a considerable amount of time on this and I'm stuck. 

This is my code: 

forms.py 
from django import forms
from django.contrib.auth.models import User
from volunteer.models import UserProfileInfo

class UserForm(forms.ModelForm):

    class Meta():
        model = User
        fields = ('email','first_name','last_name')




views.py 
from django.shortcuts import render
from volunteer.forms import UserForm

 

def register(request):

    registered = False

    if request.method =="POST" :
        user_form = UserForm(data=request.POST)

        if user_form.is_valid():

            user = user_form.save()
            user.save()

            registered = True

        else:
            print(user_form.errors)

    else:
        user_form = UserForm()

    return render(request, 'volunteer/volunteer.html',
                             {'user_form':user_form,
                              'registered':registered})

     
          


        



models.py 
from django.db import models
from django.contrib.auth.models import User

class UserProfileInfo(models.Model):

        user=models.OneToOneField(User)

        def __str__(self):
                return self.user.first_name
                return self.user.last_name
                return self.user.email







urls.py
from django.conf.urls import url

from . import views

app_name = 'volunteer'

urlpatterns = [

     url(r'^', views.register, name='register'),
]



admin.py
from django.contrib import admin
from volunteer.models import UserProfileInfo

# Register your models here.
admin.site.register(UserProfileInfo)



volunteer.html file which has the user form
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
 
 
<meta name="viewport" content = "width=device-width, initial-scale=1.0">

 
 
</head>  
 
<body>  

     <div class="jumbotron">
    {% if registered %}
   <h1>Thanks!</h1>
{% else %}
  <h1>Register</h1>


     <form method="post">
    {% csrf_token %}
{{ user_form.as_p }}
     <input type="submit" name="" value="Register">

     {% endif %}

     </div> 

     
     </form>

</body>
</html> 



I feel there's some problem in views.py or models.py, or volunteer.html. or maybe something else. Please, guide me through this. 
Thanks in advance. 

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c59e6938-86fd-4cfc-90ed-3053032b8e2d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CADNvQ1OkbZvJNeej3nVzKdt0UnyUSG2ts%3DvirLc1Y-VVbq9c5w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMKMUjt7DVZ35geta_WwtwJhPW5PQcEnesBAb%2B%2BLTGSqAGUvNg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment