django - 如何解决我的 Django 项目中的完整性错误
问题描述
我有一个管理员在登录网站时用来注册学生的表格。我扩展了 Django User 模型以适应性别、电话、profile_pic、时间等内容。每次我填写字段时,我都会收到此错误UNIQUE constraint failed: backend_extenduser.user_id on the browser 当我向下滚动一点时,我看到了 上述异常(UNIQUE constraint failed: backend_extenduser.user_id)是以下异常的直接原因 我想知道这是什么原因造成的?以及如何解决这个问题我有另一个具有相同代码库的项目,该项目运行良好,但我正在处理的这个项目正在引发错误。以下是我的代码
在模型.py
class ExtendUser(models.Model):
MALE = 'ML'
FEMALE = 'FM'
GENDER = [
(MALE, 'Male'),
(FEMALE, 'Female'),
]
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=15)
profile_pic = models.ImageField(verbose_name='Profile Picture', blank=True, null=True, upload_to='backend_uploads')
gender = models.CharField(max_length=2, choices=GENDER, default=MALE, blank=False, null=True)
time = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.user.username
我想减少我的 forms.py 以仅显示我将附加字段添加到 Django 用户模型的代码
class ExtendUserForm(forms.ModelForm):
class Meta():
MALE = 'ML'
FEMALE = 'FM'
GENDER = [
(MALE, 'Male'),
(FEMALE, 'Female'),
]
model = ExtendUser
exclude = ('time', 'user')
widgets = {
'phone':forms.TextInput(attrs={'class':'form-control'}),
'gender':forms.RadioSelect(choices=GENDER),
'profile_pic':forms.ClearableFileInput()
}
在我的views.py我有下面的代码,你可以在下面的代码中看到我已经导入了在forms.py上创建的Register()类。我试图不显示整个代码以避免它太笨重
def register(request):
if request.method == 'POST':
register_form = Register(request.POST)
extend_form = ExtendUserForm(request.POST, request.FILES)
if register_form.is_valid() and extend_form.is_valid():
form1 = register_form.save()
form2 = extend_form.save(commit=False)
form2.user = form1
extend_form.save()
messages.success(request, 'Student have been registered successfully')
else:
register_form = Register()
extend_form = ExtendUserForm(request.POST, request.FILES)
return render(request, 'backend/add-student.html', {'reg':register_form, 'ext':extend_form})
在我的模板上
<form method="post" class="form" enctype="multipart/form-data">
{{ reg }}
{{ ext }}
{% csrf_token %}
<input type="submit" class="btn btn-success btn-block" value="Add Student">
</form>
解决方案
推荐阅读
- java - 在java中列出事物组中的所有事物
- firebase - 我应该使用哪个 firebase 数据库?
- android - 在flutter中使用Http调用API不成功
- database-design - 每个粒度级别的多个事实表
- python - 匹配前 3 或 4 个字符时删除单词
- javascript - 如果未选中,如何检查单选名称按钮的数组
- typescript - 如何在函数中具有必需和可选类型参数,并且仍然具有用于记录查找的工作类型推断?
- javascript - Node 中的 MongoDB 客户端
- r - 考虑到多于一列,减少重复条目
- wagtail - Wagtailtrans 2.2 安装失败