标签: cleaned-data

form.is_valid()为false时如何访问数据

当我有一个有效的Django表单时,我可以使用form.cleaned_data访问数据.但是,当表单无效时,如何获取用户输入的数据,即form.is_valid为false.

我正在尝试访问表单集中的表单,因此form.data似乎只是给我一个烂摊子.

python forms django cleaned-data formset

48
推荐指数
5
解决办法
4万
查看次数

Django中clean_data有什么用

Django 说如果form.is_valid()Trueform.cleaned_data是存储所有经过验证的字段的地方。但我对使用该cleaned_data功能感到困惑。

form.cleaned_data['f1']-- 清理过的数据 request.POST.get('f1')-- 未验证的数据

我在 Django 中有一个模型表单。

if form1.is_valid():
    form1.save()
Run Code Online (Sandbox Code Playgroud)

这是将cleaned_data 保存到模型还是保存未验证的数据。

form2=form1.save(commit=False);
Run Code Online (Sandbox Code Playgroud)

form2 是否包含 form1 的cleaned_data 或未验证的数据。

除了将任何日期转换为 python datetime 对象之外,还有一个很好的例子来说明使用cleaned_data 与未验证数据的好处。谢谢

django cleaned-data

6
推荐指数
2
解决办法
2万
查看次数

在Django表单上引发ValidationError的问题

我正在尝试验证数据库中是否已存在提交的URL.

Form类的相关部分如下所示:

from django.contrib.sites.models import Site
class SignUpForm(forms.Form):
    # ... Other fields ...
    url = forms.URLField(label='URL for new site, eg: example.com')

    def clean_url(self):
        url = self.cleaned_data['url']
        try:
            a = Site.objects.get(domain=url)

        except Site.DoesNotExist:
            return url

        else:
            raise forms.ValidationError("That URL is already in the database.  Please submit a unique URL.")

    def clean(self):
        # Other form cleaning stuff.  I don't *think* this is causing the grief
Run Code Online (Sandbox Code Playgroud)

问题是,无论我提交什么价值,我都无法提出ValidationError.如果我在clean_url()方法中做了类似的事情:

if Site.objects.get(domain=url):
    raise forms.ValidationError("That URL is already in the database.  Please submit …
Run Code Online (Sandbox Code Playgroud)

python django django-forms cleaned-data

5
推荐指数
1
解决办法
1万
查看次数

从内联表单访问父表单的cleaning_data clean()

我有一个具有内联形式的主窗体.是否可以从内联表单的清理函数访问主表单的cleaning_data?

这就是我要问的原因.

主要表格有一个字段来定义房产是出售还是出租.然后,内联表单显示销售价格字段或租赁金额和存款的字段.我试图验证,如果该物业是出售,那么租赁和存款字段应为空.

我可以在前端界面的视图中执行此操作,但是可以在forms.py中为前端和管理员完成吗?

django django-forms cleaned-data

5
推荐指数
1
解决办法
2165
查看次数

Django - ChoiceFieldcleaned_data 获取字符串而不是整数

我有一个名为“单位”的表单字段,如下所示:

    units = forms.ChoiceField(choices=[(x, x) for x in range(1, 11)], help_text = 'Units: ')
Run Code Online (Sandbox Code Playgroud)

当我这样做时,form.cleaned_data['units']我得到一个字符串而不是一个整数。如何更改字段以获取整数?

forms django integer cleaned-data choicefield

5
推荐指数
1
解决办法
2307
查看次数

Django MultipleChoiceField不保留所选值的顺序

我有一个Django ModelForm,它通过一个模型来公开对应于多对多关系的多选字段,该模型将order选择(文档列表)作为额外属性.在前端,该字段显示为两个与admin中类似的多个选择字段,一个列出可用选项,另一个列出所选元素.

可以使用正确的元素选择保存表单,但它们始终按原始选择顺序排列,而不是选择顺序.浏览器以正确的顺序发送选择,但顺序输入form.cleaned_data['documents']始终是原始顺序的顺序.

如何使MultipleChoiceField尊重所选元素的顺序?

谢谢.

django django-forms cleaned-data

4
推荐指数
1
解决办法
2509
查看次数

create() 接受 1 个位置参数,但给出了 2 个?姜戈

我很困惑为什么当我运行这段代码时它会返回一个错误

create() 接受 1 个位置参数,但给出了 2 个

if request.method == "POST":
my_form = RawProductCreateForm(request.POST)
if my_form.is_valid():
    Product.objects.create(my_form.cleaned_data)
Run Code Online (Sandbox Code Playgroud)

但是当我修改 create 方法并在传递清理过的数据之前添加 ** 时它起作用了!

Product.objects.create(**my_form.cleaned_data)
Run Code Online (Sandbox Code Playgroud)

python django cleaned-data

2
推荐指数
1
解决办法
3355
查看次数