【发布时间】:2013-04-05 01:57:40
【问题描述】:
如何只使用ModelForm的表单验证?
请看我的代码!
models.py
from django.db import models
class IPAddr(models.Model):
ip = models.GenericIPAddressField(unique=True,)
class myModel(models.Model):
ip = models.ForeignKey(IPAddr)
forms.py
from django.forms import ModelForm
from django import forms
from app.models import * # This is thing above models.py
class myModelForm(ModelForm):
ip = forms.GenericIPAddressField()
class Meta:
model = myModel
我想要下面的逻辑。
用户输入ip(到ip字段)->验证->(form.is_valid为真)goodIP = IPAddr.objects.get_or_create(user_input_ip)->myModel.objects.create(ip=goodIP)
但验证总是失败...
因为(例如)用户输入是“1.2.3.4”。如您所知,“1.2.3.4”是有效的 IP 地址。
但是 form.is_valid 是 False。因为 '1.2.3.4' 不是 IPAddr 实例。
所以我不能使用我想要的逻辑。
让我们看看ModelForm document。
The first time you call is_valid() or access the errors attribute of a ModelForm triggers form validation as well as model validation.
我只想要表单验证的验证...
...
我是否必须使用 Forms 而不是 ModelForm...?
在使用 ModelForm 时,我可以使用我想要的逻辑吗?
【问题讨论】:
标签: django python-2.7 django-1.4 django-forms