Django根据另一个字段的值验证字段

罗密欧(Romeo Mihalcea)

我有一个称为django的字段,用于is_private指示用户完成的发布是否为私人。如果发布是私人的,则private_room必须提到一个称为的特定字段,否则需要一个名为的字段public_room

clean_private_roomclean_public_room字段中,我正在检查的值is_private如果房间是私人的,则在该clean_public_room方法中,我只返回一个空字符串""clean_private_room否则返回相同的字符串否则我将继续进行验证。

问题是self.cleaned_data.get('is_private')在这两种方法中,with的检查返回不同的结果。我尝试调试代码,然后将self.cleaned_data打印到终端,在其中一种方法中,清除的数据包含一个表单字段,在另一种方法中包含完整的发布值。

这是我的代码的一部分,请阅读其中的注释,以查看我打印的位置和打印的内容。我不知道为什么会这样。

class RoomForm( forms.ModelForm ):
    ...

    def clean_is_private( self ):
        if not 'is_private' in self.cleaned_data:
            raise forms.ValidationError("please select the type of room (private/public)")
        return self.cleaned_data.get("is_private")

    def clean_public_room( self ):
        print "<clean_public_room>"
        #   !!!!!!!!!
        #   when printing this one I only get one form value which is: public_room
        print self.cleaned_data

        if self.cleaned_data.get("is_private"):
            return ""

        #   otherwise....
        if not self.cleaned_data.get("public_room"):
            raise forms.ValidationError(
                'you need to mention a public room'
            )
        return self.cleaned_data[ 'public_room' ]

    def clean_private_room( self ):
        print "<clean_private_room>"
        #   !!!!!!!!!
        #   when printing this one I get all form values: public_room, private_room, is_private
        print self.cleaned_data

        if not self.cleaned_data.get("is_private"):
            return ""

        #   otherwise....
        if not self.cleaned_data.get("private_room"):
            raise forms.ValidationError(
                'you need to mention a private room'
            )
        return self.cleaned_data[ 'private_room' ]
双体船

表单字段将按照它们在表单中定义的顺序进行清理。因此,您只需要在字段列表中的is_private之前放置字段public_room

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一个字段的值验证Django模型字段?

Laravel根据另一个字段的值来验证该字段

Bootstrap x-editable:根据另一个字段的值验证字段

Django根据另一个字段值禁用字段

Laravel Validator Facade-根据另一个字段值验证大小

根据另一个字段的值验证 JSON 数据

Json模式根据另一个字段验证一个字段的长度

根据另一个字段的值禁用一个字段

根据另一个字段的值在MongoDB中投影一个字段

如何根据另一个字段的值设置输入字段值?

如何根据django模型中的另一个字段使字段唯一?

根据另一个字段更新一个字段

Django ORM:根据一个字段值动态确定另一个表名

如何根据另一个字段值创建字段类型?

如何根据另一个字段计算字段值?

JSON模式条件:根据另一个字段的值,该字段是必需的

在DRF的字段级别验证中获取另一个字段的值

Django-根据另一个字段更新模型字段

Django-根据另一个字段过滤表单字段queryset

根据另一个字段触发 NotBlank 验证

Django模型字段取决于另一个字段的值

熊猫数据框根据另一个字段的条件更改值

symfony验证另一个字段是否为特定值

根据角度5中的另一个字段值使表单字段为必填字段

根据另一个字段 django 获取总和

SQL仅根据另一个字段的值过滤一个字段的某些值

Rails会验证一个字段值,除非另一个字段具有值

角度5根据另一个字段的值有条件地验证字段

如何根据另一个字段的值启用或禁用字段值的编辑?