Skip to main content
 首页 » 编程设计

python之在 Django 表单中自动填写用户

2024年10月01日29txw1958

在我的项目中,一旦用户注册,它就会被重定向到更新 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"