gpt4 book ai didi

python - Django - 如何将用户对象传递给 views.py 中的表单

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:17 25 4
gpt4 key购买 nike

我是 django 的新手,一直想将 User 对象传递给 ModelForm 然后验证它。即最后将 User 对象作为 ForeignKey 添加到 Note 对象,其中 ModelForm 是类 Note 的 Meta。

我的表格.py:

  class NoteForm(ModelForm):
class Meta:
model = Note

我的观点.py:

  def addNote(request):
if request.method == 'POST':
user = User.objects.get(username=request.POST['user'])
model_form = NoteForm(request.POST, request.FILES, user)
if model_form.is_valid():
model_form.save()
return HttpResponseRedirect(reverse('index'))
return HttpResponse('De indtastede data er ikke gyldige')
return render(request, 'studies/uploadfile.html')

我的模板.html:

<form enctype="multipart/form-data" method="post" action="/notes/add/">
Note Title: <input type="text" name="name" /> <br />
Select Note: <input type="file" name="note" /> <br />
<input type="hidden" name="user" value="{{ user.id }}">
<input type="submit" value="submit" />
{% csrf_token %}
</form>

我尝试使用 request.user,因为我试图让当前用户登录并将该用户添加为 ForreignKey。任何帮助将不胜感激,在此先感谢。

最佳答案

我不确定将其发送到模板有什么意义。毕竟,您在验证之前和之后的 View 中都有它:最好在那里处理它。

要做的是从表单定义中排除 user 字段,然后在保存时手动设置它:

class NoteForm(ModelForm):
class Meta:
model = Note
exclude = ('user',)


if request.method == 'POST':
model_form = NoteForm(request.POST, request.FILES)
if model_form.is_valid():
note = model_form.save(commit=True)
note.user = request.user
note.save()
return...

另请注意,您的 View 永远不会向模板发送任何验证错误,并且您的模板不会显示错误或用户输入的无效值。请遵循文档中规定的结构。

关于python - Django - 如何将用户对象传递给 views.py 中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com