- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 ModelForm,它为我的类 Person
保存并创建一个新对象。此类 Person
有一个名为 is_adult
的属性。它的值是带有 max_length=1
的 model.CharField
,我在其中仅保存值 Y
或 N
(是/否)。
问题在于此 attr 呈现为 Select
HTML 字段。在这个 Select 字段中,可用的选择是“Yes”和“No”,因此当表单作为 POST 方法发送时,它带有一个 2-3 长度 CharField 的值,但它的 Model attr 的 max_length 为 1,所以我需要在检查 if form.is_valid()
之前对这两个选项进行切片。否则,该表单将不被接受,因为它发布的值为 2-3 个字符,而预期为 1 个字符。
模型.py:
class Person(models.Model):
is_adult = models.CharField(max_length=1, null=False, choices=ADULT_CHOICES, default='N')
选择.py:
ADULT_CHOICES= (
(0, 'No'),
(1, 'Yes'),
)
表单.py:
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ["is_adult"]
widgets = {
'is_adult': forms.Select(attrs={'class': 'form-control'}),
}
labels= {
'is_adult': 'Is an adult?',
}
当然,views.py 期望的是“Y”或“N”,而不是"is"或“否”。我尝试使用 Python 语法对其字符串进行切片,但在“form.is_valid”中被拒绝之前我无法获取表单字段值。有什么解决办法吗?谢谢!
最佳答案
标记为重复,但您应该使用choice form field .
将 forms.py 更改为以下内容:
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ["is_adult"]
labels= {
'is_adult': 'Is an adult?',
}
模型表单的默认行为应使用 form.ChoiceField ,它应自动将您的选择选项(在 HTML 中)设置为正确的“Y”和“N”值。
你不需要切片任何东西,因为 Django 应该为你处理这个。
当使用 ChoiceField 时,您的 HTML 应该像这样呈现(注意选项 values
):
<select>
<option value="Y">Yes</option>
<option value="N">No</option>
</select>
查看重复问题:How do I use Django's form framework for select options?
关于python - Django:在 "form.is_valid"之前切片表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54493655/
我有两个模型 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() 检查不起作用。当我提交
我是一名优秀的程序员,十分优秀!