当前位置: 首页 > 面试题库 >

Django中的内联表单验证

程和畅
2023-03-14
问题内容

我想在管理员更改表单中强制使用整个内联表单集。因此,在当前情况下,当我在“发票”表单(在“管理员”中)中单击“保存”时,内联订单表单为空白。我想阻止人们创建没有关联订单的发票。

有人知道这样做的简单方法吗?

required=True在此实例中,模型字段上的常规验证(如)似乎不起作用。


问题答案:

最好的方法是定义一个自定义表单集,使用一种干净的方法来验证至少存在一个发票订单。

class InvoiceOrderInlineFormset(forms.models.BaseInlineFormSet):
    def clean(self):
        # get forms that actually have valid data
        count = 0
        for form in self.forms:
            try:
                if form.cleaned_data:
                    count += 1
            except AttributeError:
                # annoyingly, if a subform is invalid Django explicity raises
                # an AttributeError for cleaned_data
                pass
        if count < 1:
            raise forms.ValidationError('You must have at least one order')

class InvoiceOrderInline(admin.StackedInline):
    formset = InvoiceOrderInlineFormset


class InvoiceAdmin(admin.ModelAdmin):
    inlines = [InvoiceOrderInline]


 类似资料:
  • 问题内容: 我正在使用Django 1.4,并且想要设置比较不同内联值的验证规则。 我有三个简单的课程 在models.py中: 在admin.py中: 因此,例如可以以10美元的价格购买一瓶朗姆酒和以8美元的价格购买一瓶伏特加酒。迈克支付15美元,汤姆支付3美元。 目的是防止用户以不匹配的金额保存实例:已支付的金额必须与商品费用的金额相同(即10 + 8 = 15 + 3)。 我试过了: 在Sh

  • 本文向大家介绍Django实现表单验证,包括了Django实现表单验证的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Django实现表单验证的具体代码,供大家参考,具体内容如下 models.py form.py view.py register.html 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍简单解析Django框架中的表单验证,包括了简单解析Django框架中的表单验证的使用技巧和注意事项,需要的朋友参考一下 我们的搜索示例仍然相当地简单,特别从数据验证方面来讲;我们仅仅只验证搜索关键值是否为空。 然后许多HTML表单包含着比检测值是否为空更为复杂的验证。 我们都有在网站上见过类似以下的错误提示信息:     请输入一个有效的email地址, foo' 并不是一个有效的

  • 我有一个Django模型表单,包含3个字段:name、lastname、email。我想要的是调整crispy表单,使每个字段及其标签在一行中,因此表单将如下所示: 我尝试使用FormHelper和Layout以及bootstrap内联属性,但我所获得的只是将表单中的所有元素都放在一行中。 我在前端非常糟糕,我被卡住了。

  • 本文向大家介绍Python中使用django form表单验证的方法,包括了Python中使用django form表单验证的方法的使用技巧和注意事项,需要的朋友参考一下 一. django form表单验证引入   有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; 前端提交后台获取: 这样就完成了基本的功能,基本上可以用了。 但是,如果用户输入并未

  • 我们正在从我们的站点联系表收到空电子邮件,我们不知道为什么。我们的表单非常简单,验证也不是那么先进,但足以满足我们的目的。 我们有5个字段: 名称(文本输入) 邮件(文本输入) 电话(文本输入) 原因(选择,3个值) 消息(文本区) 然后使用JS验证所有字段。最后,使用submit,我们发送带有php邮件功能的邮件: 总的来说,工作正常。但有时我们会收到一封包含所有内容的电子邮件(包括原因...这