【发布时间】:2021-01-25 21:49:52
【问题描述】:
您好,我无法将 django 模型保存到我的数据库中。
我的应用程序使用 Google 登录进行身份验证,如果身份验证后用户的个人资料不在数据库中,它会将他们重定向到可以创建个人资料的表单。
问题是每当用户创建配置文件时,它都不会保存到数据库中。
下面我附上了我的管理页面的图片。 (你会看到没有 Profile 对象) 我还附上了我的 forms.py、models.py 和 views.py
views.py
def register(request):
user_email = Profile.objects.filter(email = request.user.email).exists()
if request.user.is_authenticated:
if user_email:
return redirect('blog-home')
else:
if request.method == 'POST':
profile = Profile()
profile_form = CreateProfileForm(request.POST, instance=profile)
if profile_form.is_valid():
profile.user = request.user
profile.email = request.user.email
profile_form.save()
messages.success(request, f'Your account has been created! You are now able to log in')
return redirect('blog-home')
else:
profile_form = CreateProfileForm()
context = { 'form': profile_form }
return render(request, 'users/register.html', context)
models.py
class Profile(models.Model):
user = models.OneToOneField(User, null = True, on_delete=models.CASCADE)
username = models.CharField(max_length = 15, default = '')
first_name = models.CharField(max_length=20, default='')
last_name = models.CharField(max_length=20, default='')
email = models.CharField(max_length = 25, default = '')
#image = models.ImageField(null=True, blank=True, upload_to='media/user/profile')
#interests
def __str__(self):
return f'{self.first_name} Profile'
forms.py
class CreateProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'username']
【问题讨论】:
标签: python django django-models django-views django-forms