gpt4 book ai didi

python - Django:初始验证从对象实例创建的表单,而不是 POST

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

我有一个表单,我想在最初显示它之前对其进行验证。基本上我想要的行为是当用户打开表单时,初始值(从对象实例中提取)已经被检查,如果无效,则标记为附加错误。

想法是有两种形式:

def DraftForm(forms.ModelForm):
class Meta:
model = Project

def FinalForm(DraftForm):
def __init__(self, *args, **kwargs):
super(FinalForm, self).__init__(*args, **kwargs)
self.fields['text'].required = True

第一个用于编辑草稿,第二个用于检查是否填写了发布所需的所有字段等。

我认为在“编辑项目” View 中这样的东西会起作用并使初始表单显示错误:

# redirected from some other form, so no POST at this point:
if request.session.get('trying_to_publish', False):
form = FinalForm(instance=project)
form.is_valid()
else:
form = DraftForm(instance=project)
...

但是没有; full_clean() 也不会触发错误。有什么想法吗?

最佳答案

您需要绑定(bind)表格。代替请求对象,您可以只使用一个空字典。

if request.session.get('trying_to_publish', False):
form = FinalForm({}, instance=project)
form.is_valid()

is_valid()文档有助于对此进行一些解释(如果您知道自己在寻找什么)。必须先绑定(bind)表单,然后才能对其进行验证。即使传递空字典的表单也会变成 bound .

关于python - Django:初始验证从对象实例创建的表单,而不是 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314222/

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