gpt4 book ai didi

django clean_field 引用其他字段

转载 作者:行者123 更新时间:2023-12-02 15:04:02 35 4
gpt4 key购买 nike

我遇到的情况是,用户可以单击 html 表单上的复选框字段“field_enable”,并且一个不错的 jQuery 操作将显示另一个字段“fielda”,供用户输入更多数据。当“field_enable”被选中,我想要求用户也填写“fielda”。当未选中“field_enable”时,应允许用户提交表单而不会出现错误。

我希望所有错误都出现在字段上方的错误列表中,而不是整个表单的 form.errors 列表中(这就是为什么我不使用表单的 clean() 方法)。因此,我想出了下面的代码。

启用/禁用逻辑效果很好。当选中“field_enable”时,用户必须填写“fielda”,当未选中时,用户将继续。但是,当选中该框时,要求用户填写更多信息,即使他们填写“fielda”的值,他们仍然会收到验证错误“Fielda is required”。这违背了预期。

是否有人对为什么每当选中“field_enable”时“fielda”总是验证失败有任何建议

class MyForm(forms.ModelForm):

def clean_fielda(self):
cleaned_data = self.cleaned_data
if cleaned_data.get("field_enable"):
raise forms.ValidationError("Fielda is required")
return cleaned_data['fielda']

模型示例

class MyModel(models.Model):
field_enable = models.BooleanField(default=False)
fielda = models.CharField(max_length=128, blank=True, null=True)

非常感谢任何帮助!

最佳答案

如果选中“field_enable”并且您没有“field_a”值,则您希望引发验证错误。就像这样(您缺少“field_a”存在检查):

class MyForm(forms.ModelForm):

def clean_fielda(self):
cleaned_data = self.cleaned_data
if cleaned_data.get("field_enable") and not cleaned_data.get('field_a'):
raise forms.ValidationError("Fielda is required")
return cleaned_data['fielda']

关于django clean_field 引用其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376313/

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