在我的项目中,一旦用户注册,它就会被重定向到更新 View ,他必须在其中填写此信息。由于用户在注册后也自动登录,我希望该用户字段自动填写并且无法编辑.
模型.py
class Userpro(models.Model):
user = models.OneToOneField(User)
dob = models.DateField(default=datetime.date.today)
country = models.CharField(max_length=50, default='')
qualification = models.CharField(max_length=10, choices=CHO,
default='No')
university = models.CharField(max_length=100, default='')
location = models.CharField(max_length=100, default='')
def __str__(self):
return str(self.user)
表单.py
class UserProForm(forms.ModelForm):
class Meta:
model = Userpro
fields = '__all__'
View .py
def update(request):
if request.method == 'POST':
form = UserProForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('/')
else:
redirect('/')
else:
form = UserProForm()
return render(request, 'app/update.html', {'form': form})
所有必需的库都已导入。
请您参考如下方法:
我遇到了同样的问题。我找到的解决方案非常简单。 首先删除 forms.py 中的“用户”字段
他们的观点:
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
通过使 obj 成为保存的形式(但未提交到数据库中),您可以像将用户作为 request.user 一样管理它;他们保存。
注意 obj."The name you put in your models"
