You are only posting a little part of the error. It would be a lot easier to help you if you posted the whole error
2017-04-22 12:17 GMT+02:00 Neutron's dfgsdgsd <[email protected]>: > I am working on a Role Based Access Control system on django.where at the > signup/register people will be designated to a 'department' and will be > assigned a 'role' Hence I created a custom user model > > models.py > > from django.db import models > from django.contrib.auth.models import User > from django.db.models.signals import post_save > from django.dispatch import receiver > > > class Profile(models.Model): > > DEPARTMENT_CHOICES = ( > ('Production', 'Production'), > ('Marketing', 'Marketing'), > ('IT', 'IT'), > ('HR', 'HR'), > ('Accounts', 'Accounts'), > ) > ROLE_CHOICES = ( > ('Manager', 'Manager'), > ('Team Lead', 'Team Lead'), > ('Member', 'Member'), > ) > > user = models.OneToOneField( > User,) > department = models.CharField( > max_length=50, choices=DEPARTMENT_CHOICES, null=True) > role = models.CharField(max_length=50, choices=ROLE_CHOICES, null=True) > > def __unicode__(self): > return unicode(self.user.first_name + ' ' + self.user.last_name) > > def __str__(self): > return self.user.first_name + ' ' + self.user.last_name > > > def create_profile(sender, **kwargs): > if kwargs['created']: > user_profile = Profile.objects.create(user=kwargs['instance']) > pass > > post_save.connect(create_profile, sender=User) > > Then i created a form like > > forms.py > > from django import forms > from django.contrib.auth.forms import UserCreationForm > from django.contrib.auth.models import User > from .models import Profile > > > class SignUpForm(UserCreationForm): > DEPARTMENT_CHOICES = ( > ('Production', 'Production'), > ('Marketing', 'Marketing'), > ('IT', 'IT'), > ('HR', 'HR'), > ('Accounts', 'Accounts'), > ) > ROLE_CHOICES = ( > ('Manager', 'Manager'), > ('Team Lead', 'Team Lead'), > ('Member', 'Member'), > ) > first_name = forms.CharField( > max_length=30, required=True, help_text='Optional.') > last_name = forms.CharField( > max_length=30, required=True, help_text='Optional.') > email = forms.EmailField( > max_length=254, required=False) > department = forms.ChoiceField(choices=DEPARTMENT_CHOICES, ) > role = forms.ChoiceField(choices=ROLE_CHOICES, ) > > class Meta: > model = User > fields = ('first_name', 'last_name', 'username', > 'email', 'password1', 'password2', 'department', 'role') > > The my views > > from django.shortcuts import render, redirect, render_to_response > from django.contrib.auth.decorators import login_required > from django.contrib.auth import login, authenticate > from .forms import SignUpForm > from .models import Profile > from django.shortcuts import get_object_or_404 > from django.http import Http404 > from django.contrib.auth.models import User > from django.template import RequestContext > > def register(request): > if request.user.is_authenticated: > if request.user.is_superuser or request.user.role == 'Manager': > if request.method == 'POST': > form = SignUpForm(request.POST) > if form.is_valid(): > user = form.save() > userprofile = Profile.objects.update( > user=user, > department=form.cleaned_data['department']) > userprofile = Profile.objects.update( > user=user, role=form.cleaned_data['role']) > else: > form = SignUpForm() > > c = { > 'form': form, > } > > return render(request, 'registration/register.html', c) > else: > raise Http404 > else: > raise Http404 > > my register.html > > {% extends 'layouts/base.html' %} {% load widget_tweaks %}{% block > additionalbottom %} > <script> > var allParas = document.getElementsByTagName('div'); > //filter by class name if desired... > for (var i = 0; i < allParas.length; i++) { > if (allParas[i].getElementsByTagName('*').length == 0) { > allParas[i].style.display = 'none'; > } > } > </script> > {% endblock %} {% block content %} > <div class="login-page"> > <div class="form"> > <h2>User Registration</h2> > <form class="login-form" method="post"> > {% csrf_token %} > <div class="row"> > {% endblock %} {% for field in form %} > <div class="col-md-6"> > {% if field.name == "first_name" or field.name == > "last_name" %} {% render_field field class="form-control" > placeholder=field.label.capitalize %} {% endif %} > </div> > <div class="col-md-6"> > {% if field.name == "username" or field.name == > "email" %} {% render_field field class="form-control" > placeholder=field.label.capitalize %} {% endif %} > </div> > <div class="col-md-6 form-group"> > {% if field.name == "department" or field.name == > "role" %} {% render_field field class="form-control" > placeholder=field.label.capitalize %} {% endif %} > </div> > <div class="col-md-12"> > {% if field.name == "password1" %} {% render_field field > class="form-control" placeholder=field.label.capitalize %} {% endif %} > </div> > <div class="col-md-12"> > {% if field.name == "password2" %} {% render_field field > class="form-control" placeholder=field.label.capitalize %} {% endif %} > </div> > {% endfor %} > </div> > <div class="form-group"> > <button type="submit">Register</button> > </div> > </form> > {% if form.errors %} {% for field in form %} {% for error in > field.errors %} > <div class="alert alert-danger"> > <strong>{{ error|escape }}</strong> > </div> > {% endfor %} {% endfor %} {% for error in form.non_field_errors %} > <div class="alert alert-danger"> > <strong>{{ error|escape }}</strong> > </div> > {% endfor %} {% endif %} > </div> > </div> > > now when ever i try to submit my form it says > >> IntegrityError at /register/ >> column user_id is not unique > > i tried so many solutions from google and SO nothing seems to solve the > problem can anyone tell me how to fix it or why it cannot be done if it > cannot be done what is the work around > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > 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/2c054c19-ec86-4c05-97fc-6139bcdd59d3%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- Cordialement, Ludovic Coues +33 6 14 87 43 42 -- 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 [email protected]. To post to this group, send email to [email protected]. 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/CAEuG%2BTbfLN2zm1O5%2BwYMGt7YBx-gcwqJ1xLPsXhzbE-YHLOF3A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

