Django /formpage'处的类型错误&燃气轮机';在';str';和';int';此外,错误在表单中是特定的。是否有效

Django /formpage'处的类型错误&燃气轮机';在';str';和';int';此外,错误在表单中是特定的。是否有效,django,django-forms,Django,Django Forms,这是forms.py from django import forms from django.core import validators def check_for_z(value): if value[0].lower() !='z': raise forms.ValidationError("NAME NEEDS TO START WITH Z") class FormName(forms.Form): name = forms.CharField() e

这是forms.py

from django import forms
from django.core import validators

def check_for_z(value):
if value[0].lower() !='z':
    raise forms.ValidationError("NAME NEEDS TO START WITH Z")
class FormName(forms.Form):
name  = forms.CharField()
email = forms.EmailField()
text  = forms.CharField(widget= forms.Textarea)
botcatcher = forms.CharField(required=False,
                             widget=forms.HiddenInput,
                             validators=[validators.MaxValueValidator(0)])
这是views.py

from django.shortcuts import render
from . import forms
from .forms import FormName
from django.http import HttpResponseRedirect
def index(request):
return render(request,'formapp/index.html')

def form_name_view(request):
form =  forms.FormName()
if request.method == "POST":
    form = forms.FormName(request.POST)

    if form .is_valid ():
        # do something code
        print("Validations scuces")
        print("NAME: "+form.cleaned_data["name"])
        print("EMAIL: "+form.cleaned_data["email"])
        print("TEXT:"+form.cleaned_data['text'])
        # return HttpResponseRedirect("/thanks/")
    else:
        form= FormName()
return render(request,'formapp/form_page.html',{'form' : form})
现在实际上它在表单的行上抛出了错误 并且在/formpage上显示类型错误 “str”和“int”实例之间不支持“>”

当我在botcatcher中更改/添加属性时就会发生这种情况,即我添加value='笑话'


其他一切都类似于普通的django

验证器
MaxValueValidator(0)
CharField
不能很好地协同工作,因为
CharField
会将值清除为
str
ing,然后将其与
int
进行比较

您可以使用
整型字段
检查该值是否小于或等于零:

class FormName(forms.Form):
    name  = forms.CharField()
    email = forms.EmailField()
    text  = forms.CharField(widget=forms.Textarea)
    botcatcher = forms.IntegerField(
        required=False,
        widget=forms.HiddenInput,
        validators=[validators.MaxValueValidator(0)]
    )

CharField
上使用
validators.MaxValueValidator(0)
没有多大意义,因为您无法将字符串与int进行比较。
class FormName(forms.Form):
    name  = forms.CharField()
    email = forms.EmailField()
    text  = forms.CharField(widget=forms.Textarea)
    botcatcher = forms.IntegerField(
        required=False,
        widget=forms.HiddenInput,
        min_value=0  # ← checks if it is a postive number
    )