gpt4 book ai didi

python - 如何让 Django 的通用 View 使用带有初始值的表单?

转载 作者:行者123 更新时间:2023-11-28 20:54:39 26 4
gpt4 key购买 nike

我知道如何从 View 中为表单设置初始值。但是我该如何让通用 View 为表单设置初始值呢?我可以为通用 View 编写一个包装器 View ,但我仍然无法访问表单对象实例化。

我试图实现的具体目标是让用户使用 create_object 通用 View 创建一个新对象。但是,我想将对象“用户”的一个字段设置为当前登录的用户,该用户只能作为 request.user 访问。如何初始化表单以包含此字段?

编辑:我遇到了__new__。这可以使用一些默认参数调用自己的构造函数吗?

非常感谢。

最佳答案

不幸的是,您无法通过 Django 的 create_object 通用 View 实现此行为;你将不得不自己写。然而,这很简单。

首先,您必须创建一个新的表单类,如下所示:

from django import forms
class MyForm(forms.ModelForm):
class Meta:
model = MyModel # model has a user field

然后你就可以像这样创建一个 View :

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required

@login_required
def create_mymodel(request):
if request.method == 'POST':
# Get data from form
form = MyForm(request.POST)
# If the form is valid, create a new object and redirect to it.
if form.is_valid():
newObject = form.save()
return HttpResponseRedirect(newObject.get_absolute_url())
else:
# Fill in the field with the current user by default
form = MyForm(initial={'user': request.user})
# Render our template
return render_to_response('path/to/template.html',
{'form': form},
context_instance=RequestContext(request))

关于python - 如何让 Django 的通用 View 使用带有初始值的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/907858/

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