django - NOT NULL 约束失败:users_details.user_id
问题描述
我试图在我的注册表单页面上添加另一个包含地址和出生日期的详细信息表单。每次我尝试注册时,都会收到 NOT NULL 约束失败错误。
模型.py
class Details(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
address = models.CharField(max_length=60, blank=True)
birth_date = models.DateField(null=True, blank=True)
视图.py
def register(request):
if request.method == 'POST':
r_form = UserRegisterForm(request.POST)
o_form = DetailsForm(request.POST)
if r_form.is_valid and o_form.is_valid():
r_form.save()
o_form.save()
username = r_form.cleaned_data.get('username')
messages.success(request, f'Your account has been created!')
return redirect('login')
else:
r_form = UserRegisterForm()
o_form = DetailsForm()
context = {
'r_form' : r_form,
'o_form' : o_form
}
return render(request, 'users/register.html', context)
表格.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email','password1', 'password2']
class DetailsForm(forms.ModelForm):
address = forms.CharField()
birth_date = forms.DateField()
class Meta:
model = Details
fields = ['address', 'birth_date']
解决方案
虽然自从可插入用户模型出现以来,无关的细节/配置文件“sidecar”模型并不是最佳实践,但这个特殊问题是由于两个模型没有关联造成的。
尝试
if r_form.is_valid and o_form.is_valid():
user = r_form.save()
o_form.instance.user = user
o_form.save()
推荐阅读
- html - 折线图未在 mat-tab 中显示(角度材料)
- python - 导入理解失败
- php - 我不知道如何使用 MAMP 使用 Symfony 显示我自己的页面
- django - 我如何在 Django 中创建更新功能
- ms-access - 将大型数据库从 MariaDB 链接到 Ms 访问 - 获取“ODBC – 调用失败。(错误 3146)”
- vba - 更改 InLineShape 上的自动更新属性时出现错误 5891
- spring-boot - Spring Boot Logback - 禁用要在控制台上显示的类文件记录器
- excel - 添加项目后VBA删除行
- python - 如何使用 selenium 抓取表数据?
- node.js - MongooseError:操作 `guild-prefixes.findOne()` 缓冲在 10000 毫秒后超时 discord.js