0

サイトに新規ユーザーを登録しようとしていますが、

class UserInfo(models.Model):
    user = models.ForeignKey(User,primary_key=True)#user profile
    email_id=models.CharField(max_length=32, null=True, blank=True)   

ユーザーを登録しているときにIntegrity Errorが表示されて行き詰まります。問題の解決を手伝ってください。

def registration(request):
    registration_dict = {}
    if 1==1 :
    #if request.POST:
        #username=request.POST['email']
        #password=request.POST['password']
        username="admin@admin.com"
        password='123456'
        #try:
        UserInfo.objects.get_or_create(email_id=username,user__username=username,user__email=username,user__password=password)
        #except:
          #  registration_dict["status"]="0"
         #   registration_dict["message"]="Username already present"
           # return HttpResponse(simplejson.dumps(registration_dict),content_type="application/json")  

        registration_dict["status"]="1"
        registration_dict["message"]="Thank You for registering"
        return HttpResponse(simplejson.dumps(registration_dict),content_type="application/json") 
    else:
        registration_dict["status"]="0"
        registration_dict["message"]="Unable to process the request"
        return HttpResponse(simplejson.dumps(registration_dict),content_type="application/json")    

EDIT 1 変更を試み たところUserInfo.objects.get_or_create(email_id=username,user__username=username,user__email=username,user__password=password,user_id=1) 、エラーが次のように変わりました

'Cannot add or update a child row: a foreign key constraint fails (`app_info`.`appdata_userinfo`, CONSTRAINT `user_id_refs_id_b0fd803b` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))')
4

3 に答える 3

1

元の User オブジェクトが存在しない場合、あらゆる種類の問題が発生します。したがって、プロセスを 2 つのステップに分割する必要があります。

  1. Userオブジェクトが作成されていない場合は、オブジェクトが存在するかどうかを確認します。
  2. オブジェクトが作成されていない場合は、そのユーザーUserInfoのオブジェクトが存在するかどうかを確認します。

があるForeignKeyため、1 つのステップで行うことはできません。

username = "admin@admin.com"
password = '123456'

obj, created = User.objects.get_or_create(username=username)
obj.set_password(password) # the proper way to set the password
obj.save()

# Now fetch or create a UserInfo object
info, created = UserInfo.objects.get_or_create(email_id=username,user=obj)
于 2013-07-22T08:02:26.937 に答える