- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 modelformset_factory 创建了一个简单的联系表单,以使用数据库模型在 View 中构建表单。我遇到的问题是 save() 之前的 is_valid() 检查不起作用。当我提交带有空字段的表单时,它仍然传递 is_valid() 并尝试写入数据库。
我希望 is_valid() 检查在字段为空时失败,以便用户可以再次定向到表单并显示错误消息。我相信有一个简单的解决方案。你知道我的代码中缺少什么吗?
谢谢。
代码:
models.py
class Response(models.Model):
name = models.CharField(max_length=50,verbose_name='Your Name:')
email = models.CharField(max_length=50,verbose_name='Email:')
phone = models.CharField(max_length=50,verbose_name='Phone Number:')
apt_size = models.CharField(max_length=25,
choices=APT_CHOICES,
verbose_name='Apt Size:')
movein_at= models.DateField(verbose_name='Desired Move-In Date')
community = models.CharField(max_length=50,
choices=COMMUNITY_CHOICES,
verbose_name='Community You Are Interested In:')
referred_by = models.CharField(max_length=50,
choices=REFERRED_CHOICES,
verbose_name='Found Us Where?')
referred_other = models.CharField(blank=True,max_length=50,verbose_name='If Other:')
comments = models.TextField(verbose_name='Comments:')
created_at = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.name
views.py
from summitpark.contact.models import *
from django.shortcuts import render_to_response
from django.forms.models import modelformset_factory
def form(request):
contact_form_set = modelformset_factory(Response,fields=('name','email','phone',
'apt_size','movein_at',
'community','referred_by',
'comments'),
exclude=('id'))
if request.method == 'POST':
formset = contact_form_set(request.POST)
if formset.is_valid():
formset.save()
return render_to_response('contact/confirm.html')
else:
return render_to_response('contact/form.html',{'formset':formset})
else:
formset = contact_form_set(queryset=Response.objects.none())
return render_to_response('contact/form.html',{'formset':formset}
解决方案:
class BaseContactFormSet(BaseModelFormSet):
def clean(self):
if any(self.errors):
return
for form in self.forms:
name = form['name'].data
if not name:
raise forms.ValidationError, "Please Complete the Required Fields
最佳答案
您的问题是,提供 0 个项目是有效的表单集,没有最低限度的验证。我将提供一个自定义 BaseModelFormset 子类,它的 clean() 方法仅检查至少一个对象。
关于python - Django is_valid() 不适用于 modelformset_factory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791942/
我有两个模型 class Friend(models.Model): me = models.ForeignKey(User) friend = models.Foreig
在我的 Django 应用程序中,即使我添加了与管理应用程序相同的数据,表单也永远不会返回 true。我的 model.py 看起来像: from django.db import models fr
我有一个EmailField(primary_key=True)。我使用 ModelForm 向用户呈现表单,并在回发时调用 form.is_valid()。 我在该字段中看到两种类型的错误。一是主键
这是 models.py from django.db import models class RegisterForm(models.Model): fname = mode
我有一个 View ,它验证表单中的数据,该表单只包含有关项目的一些基本信息。我很困惑 is_valid即使在阅读后,方法也可以在这里工作 this .如果用户没有输入一些必填字段,如名称或图像 1,
我是网络开发的真正初学者。以下代码在 is_valid() 处失败检查。但我不明白为什么:表单是否应该从 POST 数据中获取其数据? 型号: class Statement(models.Model
伙计们!我有这个用户模型的序列化器类 class UserSerializer(serializers.ModelSerializer): username = serializers.Reg
git repo : django tutorial 我一直在关注上述 django 项目,该项目着眼于创建人与人之间的聊天。我遇到过这部分: def message_list(request, se
我正在学习 Django,并且偶然发现了一些我需要帮助的东西: forms.py class UserForm(forms.ModelForm): password1 = forms.Char
在我的 Django 应用程序中,我有一个从简单(非模型)表单创建的表单集,其中 extra=1 (以允许 javasript 稍后添加更多表单)。 class SomeForm(forms.Form
我在掌握如何执行此操作时遇到了一些麻烦。我已经尽最大努力搜索谷歌,但没有任何运气。 我将从一些代码开始并解释我正在尝试做的事情: 模型.py class Action(models.Model):
我有一个 django charField,通过 is_valid() 方法进行检查。用户应该在此字段中输入有效的逻辑表达式,因此我编写了一个解析方法,如果表达式不正确,该方法会引发异常。 如何增强
如何在调用 is_valid() 方法后更改表单字段值? 在使用 form.is_valid 验证数据后,我试图更改字段 u_id(这是必需的)。我可以更改数据,甚至可以将其显示在 HttpRespo
我正在尝试使用Django 1.10.5建立一个网站。目前,我正在研究一种在前端编辑数据库对象的方法。我的计划是定义一个表单“EditForm”,用户在其中输入要编辑的对象的ID。当我仅在实际站点上测
我有一个简单的 Django 代码。 models.py 文件中有我的模型和表单: from django.db import models from django.forms import Mode
问题 我正在尝试让 LightOpenID 与 Google Apps Enterprise 帐户一起使用。我收到“找不到服务器!”当我调用 validate() 时。我模拟了一个快速页面来测试 Li
我创建了一个表单,它是 forms.ModelForm。在“ View ”方面,我创建了一个 generic.UpdateView View 。 在这两个不同的类中,一侧有 is_valid(),另一
我有这些模型: class Gallery(models.Model): HeadImage = models.ImageField(upload_to="gallery",blank=True
Form.is_valid() 始终返回 false,并且从不显示任何类型的错误。以下是 forms.py、views.py 和 template/transaction_add_page.html
我使用 modelformset_factory 创建了一个简单的联系表单,以使用数据库模型在 View 中构建表单。我遇到的问题是 save() 之前的 is_valid() 检查不起作用。当我提交
我是一名优秀的程序员,十分优秀!