Django如何在Django表单中自动保存用户?

博耶内克

当我将“用户”字段传递给我的模型表单时。我正在获取所有用户详细信息作为下拉列表。看图:

在此处输入图片说明

我正在尝试在不显示此下拉列表的情况下保存当前用户实例,因为我希望用户将在不选择或显示此下拉列表的情况下自动保存。

这是我的forms.py文件:

class ProfileFroms(forms.ModelForm):
      
      class Meta:
          model = UserProfile
          fields = ["user","profile_pic","mobile","country","website_link"] 

当我从字段中删除“用户”时,出现此错误:

"NOT NULL constraint failed: members_userprofile.user_id"

我也试过这个代码来保存当前用户,但它给我带来了同样的错误。

视图.py

if forms.is_valid():
          forms.user = request.user

这是我的完整代码:

模型.py

class UserManagement(AbstractUser):
      is_subscriber = models.BooleanField(default=False)
      is_customer = models.BooleanField(default=False)


class UserProfile(models.Model):
      user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="userprofile")
      profile_pic = models.ImageField(upload_to='profile/images/',validators=[validate_file_size,FileExtensionValidator( ['png','jpg'] )],blank=True,null=True)
      mobile = models.IntegerField(blank=True,null=True)
      country = models.CharField(max_length=200,blank=True,null=True)
      website_link = models.CharField(max_length=3000,blank=True,null=True)

视图.py

def UserProfileView(request):

   userinfo = UserManagement.objects.filter(username=request.user)
    
   
   forms = ProfileFroms(request.POST,request.FILES or None)
   if request.method == "POST":
      if forms.is_valid():
          #forms.user = request.user #tried this line for save current user but didn't work 
          forms.save()
          messages.add_message(request, messages.INFO,'Profile updated sucessfully') 
          return redirect("members:user-profile-private")
   else:
      messages.add_message(request, messages.INFO,'Somethings wrong. Profile not updated')  
      print("invalid")

   context={"userinfo":userinfo,"forms":forms}

   return render(request,"members/privateprofile.html",context)
威廉·范·翁塞姆

user从表单中删除字段:

class ProfileFroms(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ['profile_pic', 'mobile', 'country', 'website_link']

然后你改变.instance表单的(不是表单本身),所以:

if forms.is_valid():
    forms.instance.user = request.user
    forms.save()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django-自动在表单中填写用户

在Django表单中自动填充用户

Django如何自动将用户保存在froms中?

如何在Django / Python中自动填充PDF表单?

如何在 Django 中自动填充可编辑表单

如何在Django的表单类中传递当前登录的用户

在Django的textarea中自动保存用户输入

在Django中基于类的视图中使用post保存表单时如何保存用户

如何在django中保存注册用户

如何在 django 的扩展用户创建表单中保存自定义添加的字段

如何在Django模型数据库中使用已发布的用户保存表单

如何在我的 Django 表单中保存或存储用户上传的文档?

如何在Django ModelForm中设置基于用户的表单字段选择(使用django-allauth)

关于表单的问题,我如何在表单字段 pyhton django 中获得即时用户

如何在Django中设置表单ID?

如何在javascript中获取Django表单值而不将其保存到模型中

如何在我的 Django 表单中检查和传递用户的实例?

如何在Django中删除某些用户图像表单数据库?

如何在django管理表单中显示属于用户公司的列表段落

我们如何在Django中通过基于类的通用视图保存表单

保存之前如何在Django模型表单中访问字段的先前值?

Django:如何在表单保存中向数据添加自定义字段?

如何在Django 1.8中多次保存同一表单?

如何在 Django 中从 base.html 保存表单数据?

Django如何在一个提交请求中两次保存相同的模型表单

Django中的用户创建表单

如何在 Django 中保存没有提交按钮的表单

如何在Django模型表单中保存外键

如何在React和Django Rest Framework中实现自动完成用户搜索