一個用戶註冊後,顯示如下IntegrityError:用戶註冊導致IntegrityError
IntegrityError at /users/signup
(1062, "Duplicate entry '1' for key 2")
即使用戶得到一個錯誤,他可以定期登錄。用戶與UserProfile一起創建。
下面是導致該錯誤的/用戶/註冊視圖:
def signup(request):
signup_form = SignupForm(request.POST)
#goal = request.POST.get('goal')
goal = None
if signup_form.is_valid():
username = signup_form.cleaned_data['username']
email = signup_form.cleaned_data['email']
password = signup_form.cleaned_data['password']
user = User.objects.create_user(username, email, password)
user = authenticate(username=username, password=password)
login(request, user)
return HttpResponseRedirect("/")
else:
return render_to_response("authorize.html", {'signup_form': signup_form, 'goal': goal}, context_instance=RequestContext(request))
這裏是我的/user/models.py:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from main.models import Goal
class UserProfile(models.Model):
user = models.OneToOneField(User)
joined_goals = models.ManyToManyField(Goal, related_name="joined_goals")
followingGoals = models.ManyToManyField(Goal, related_name="following_goals")
def __unicode__(self):
return self.user.username
def get_goals(self):
try:
goals = Goal.objects.filter(user=self.user)
return goals
except Goal.DoesNotExist:
return []
def create_user_profile(sender, instance, created, **kwargs):
if created:
userProfile = UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
我已經下降了所有的表中我的MySQL數據庫多次運行python manage.py syncdb,但每創建一個新用戶後,我仍然得到相同的錯誤。
編輯:我沒有得到這個錯誤在我的本地主機,只在我的遠程主機上。我在本地主機上使用sqlite,在遠程主機上使用mysql。
發佈相關視圖;你也可以簡化'get_goals(self)'來簡單地'def get_goals(self):return Goal.objects.filter(user = self.user)'('filter'返回一個空的'QuerySet',如果沒有匹配的話,提高'DoesNotExist') –
難道你還沒有其他的信號處理程序? – ilvar
我添加了相關的視圖。唯一的信號處理程序我創建了一個新的用戶配置文件。 – egidra