当我将“用户”字段传递给我的模型表单时。我正在获取所有用户详细信息作为下拉列表。看图:
我正在尝试在不显示此下拉列表的情况下保存当前用户实例,因为我希望用户将在不选择或显示此下拉列表的情况下自动保存。
这是我的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] 删除。
我来说两句