如何在django modelform中将用户字段自动设置为当前用户

如何在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

如何将当前登录用户设置为django模型的用户字段。在我看来,我使用的是函数基视图。我的模型是这样的。 Model.py

下面是我的表单。我希望表单能够自动包含登录用户的信息。这意味着用户字段应该自动包含登录用户的信息。这样我就可以轻松地查询和显示登录用户创建的对象 form.py

view.py

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)