如何在django modelform中将用户字段自动设置为当前用户
如何将当前登录用户设置为django模型的用户字段。在我看来,我使用的是函数基视图。我的模型是这样的。 Model.py 下面是我的表单。我希望表单能够自动包含登录用户的信息。这意味着用户字段应该自动包含登录用户的信息。这样我就可以轻松地查询和显示登录用户创建的对象 form.py view.py如何在django modelform中将用户字段自动设置为当前用户,django,Django,如何将当前登录用户设置为django模型的用户字段。在我看来,我使用的是函数基视图。我的模型是这样的。 Model.py 下面是我的表单。我希望表单能够自动包含登录用户的信息。这意味着用户字段应该自动包含登录用户的信息。这样我就可以轻松地查询和显示登录用户创建的对象 form.py view.py def SetUpDistributor(request): if not request.user: return HttpResponse('login to access this pa
def SetUpDistributor(request):
if not request.user:
return HttpResponse('login to access this page ')
if request.method =='POST':
distributor = DistributionProfileForm(request.POST,request.FILES)
if distributor.is_valid():
distributor.save(commit=False)
distributor.user=request.user
distributor.save()
messages.success(request,'Distributor profile created ')
return redirect('gbiz1990:distributor_profile_setup')
else:
messages.error(request,'Something went wrong')
else:
distributor=DistributionProfileForm()
return render(request,"gbiz1990/User_function_pages/distributors.html",{'distributor':distributor})
使用
请求。用户
。我不知道你的应用程序是如何工作的,但在创建时,请执行以下操作:
model = ModelName(user = request.user)
model.save()
我使用了ModelName
,因为最好的做法是用大写字母开头类名,这在create
模型中没有实现。我建议你改变这个
在您看来,这似乎也是一个错误,应该是请求
而不是请求
你的观点可能是这样的:
def index(request):
form = FormName(request.POST or None)
if form.is_valid():
form.save()
return render(request, "path/to/template", {"form": form})
您的模板可以是:
<form method="POST" action="">
{{ form }}
<input type="submit">
</form>
{{form}}
您的视图可能如下所示:
def your_view(request):
form = YourForm(request.POST or None)
if form.is_valid():
your_object = form.save(commit=False)
your_object.user = request.user
your_object.save()
return redirect('your_success_url')
context = {'form': form}
return render(request, 'your_template.html', context)
你需要调整一些部分,但总的来说,这应该是你的观点。您需要注意的是,此视图需要一个登录\u所需的
装饰程序,以便不允许未登录的用户创建对象。因此我解决了我的问题
在我的model.py中
class SetdistributorProfile(models.Model):
user=modelss.foreignkey(settings.AUTH_USER_MODEL,null=True,unique=True)
views.py
def SetDistribution(request):
if not requested.user.is_authenticated:
return redirect('app_name:url_name)
if request.method === 'POST':
dis = MymodelForm(request.POST or None)
if dis.is_valid():
instance=dis.save(commit=False)
instance.user=request.user
instance.save()
return redirect('myappname:urlname')
else:
instance=MymodelFomr()
context={'intance':intance}
return render(request,'page.hmtl',context)
很抱歉,这是一个输入错误。请详细说明您将如何使用函数基视图创建视图。我只想能够自动将登录用户添加到模型的用户字段。我添加了一个示例,但我不知道您的目的是什么。我是stackoverflow新手。我在所有的工作中都问过类似的问题代码,我很乐意给你贴上标签。这可能吗。我也在使用django模型表单,登录用户可以在其中输入信息。请查看它。它包含我的代码。但还没有人回答它。我如何创建我的对象。我尝试了很多示例,但都没有效果。我对编程非常陌生。假设我什么都不懂。请更新您的问题并添加视图的全部代码。或者在这里发送一个指向要点的链接。谢谢,我已经编辑并添加了我的完整代码。如果您能帮助我解决这个问题,我在您的视图中没有看到任何错误,错误是什么?当我签入管理员时,用户字段是空的。到那时,它应该被创建对象的登录用户名填充。
class SetdistributorProfile(models.Model):
user=modelss.foreignkey(settings.AUTH_USER_MODEL,null=True,unique=True)
def SetDistribution(request):
if not requested.user.is_authenticated:
return redirect('app_name:url_name)
if request.method === 'POST':
dis = MymodelForm(request.POST or None)
if dis.is_valid():
instance=dis.save(commit=False)
instance.user=request.user
instance.save()
return redirect('myappname:urlname')
else:
instance=MymodelFomr()
context={'intance':intance}
return render(request,'page.hmtl',context)