Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
唯一约束失败:new\uu users\u profile.user\u id.Python Django_Python_Django - Fatal编程技术网

唯一约束失败:new\uu users\u profile.user\u id.Python Django

唯一约束失败:new\uu users\u profile.user\u id.Python Django,python,django,Python,Django,django.db.utils.IntegrityError唯一约束失败 sqlite3.IntegrityError:唯一约束失败:新建\u用户\u配置文件。用户\u id 上述异常是以下异常的直接原因: 新用户配置文件。用户id 当我尝试注册新用户、登录到现有用户以及尝试迁移时发生错误。我尝试删除所有迁移并再次迁移,但没有帮助 models.py from django.db import models from django.contrib.auth.models import User

django.db.utils.IntegrityError唯一约束失败 sqlite3.IntegrityError:唯一约束失败:新建\u用户\u配置文件。用户\u id 上述异常是以下异常的直接原因: 新用户配置文件。用户id

当我尝试注册新用户、登录到现有用户以及尝试迁移时发生错误。我尝试删除所有迁移并再次迁移,但没有帮助

models.py

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


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

class Media(models.Model):    
    image_name = models.CharField(max_length=50)
    image_description = models.CharField(max_length=80)
    image_image = models.ImageField(upload_to='media', default='default.jpg')
观点

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import *

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

class MediaForm(forms.ModelForm):

    class Meta:
        model = Media
        fields = ['image_name', 'image_description', 'image_image']

我想你需要
primary\u key=True,

class Profile(models.Model):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, null=True)

在类配置文件中,添加
primary_key=True
并删除
null=True

user = models.OneToOneField(User,primary_key=True, on_delete=models.CASCADE)

我希望它能起作用

您的目标是创建引用同一
用户
对象的两个配置文件。
OneToOneField
旨在防止出现这种情况。您可以使用
UserRegisterForm
吗?我在帖子中添加了forms.py。您是否使用信号创建了相关的
配置文件
对象?是的,我使用信号。加入一个职位
class Profile(models.Model):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, null=True)
user = models.OneToOneField(User,primary_key=True, on_delete=models.CASCADE)