python - 如何创建用户配置文件更新视图/表单?
问题描述
我试图更新用户个人资料,但我不知道我在这里犯了什么错误。
#forms.py
class AddStudentUserForm(forms.ModelForm):
class Meta:
model = User
fields = ["username", "first_name", "last_name"]
class AddStudentStaffForm(forms.ModelForm):
class Meta:
model = Staff
fields = ["gender", "dob", "mob", "img"]
#views.py
def editProfile(request, user, id):
if request.POST:
staffform = AddStudentStaffForm(request.POST or None, request.FILES or None, instance=request.user.staff_profile)
userform = AddStudentUserForm(data=request.POST, instance=request.user)
if staffform.is_valid():
staffform.save()
if userform.is_valid():
userform.save()
return redirect(profile,user)
return render(request, 'edit.html')
#models.py
class Staff(models.Model):
Male = 'Male'
Female = 'Female'
Other = 'Other'
GENDER_CHOICE = (
(Male, 'Male'),
(Female, 'Female'),
(Other, 'Other')
)
id = models.AutoField(primary_key=True)
admin = models.OneToOneField(User, related_name='staff_profile', on_delete=models.CASCADE)
gender = models.CharField(max_length=10, choices=GENDER_CHOICE, default=Male)
dob = models.DateField(auto_now_add=False, blank=True, null=True, default=None)
mob = models.IntegerField(blank=True, null=True, default=None)
img = models.ImageField(upload_to='staff/', blank="True", null="True")
objects = models.Manager()
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Staff.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.staff_profile.save()
def __str__(self):
return self.gender
我开始创建一个学生管理系统项目。但是我在开发它时遇到了一些困难。我尝试了很多来解决这些问题,但因为我无法解决。
在这里,如果我想更新诸如性别、出生日期、暴民之类的员工模型字段,它将成功更新,但是当我尝试更新用户名、名字、姓氏等用户模型字段时,它不会更新。我认为if userform.is_valid():
条件无法运行,但我不知道我在这里犯了什么错误。
解决方案
您可以调试表单无效的原因,请尝试以下代码:
if userform.is_valid():
userform.save()
return redirect(profile,user)
else:
print userform.errors #To see the form errors in the console.
推荐阅读
- c# - 如何在 ListView 中固定 HeaderColumn 宽度?
- web-applications - 使用python的EventHub触发功能
- java - 为什么 Spring Boot Microservice 的参数 Principal 为 null 值,如何获取客户端应用程序的实际值?
- c# - Xamarin.Forms - KeyNotFoundException:给定的键不在字典 C# 中
- jetbrains-ide - JetBrains IdeaVim 中 Open Recent .. 的操作列表项是什么?
- php - 在 Windows 10 phpMyAdmin 上显示缺少 mysqli 扩展。请检查您的 PHP 配置
- android - Android Studio 单元测试失败
- java - 使用 java.nio.Files 或 java.io 类创建 java.io.BufferedWriter
- wso2 - 登录发布者或商店时未通过对等方身份验证
- android - 一些新添加的方法上未显示 Android Studio API 级别警告