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)
フォーム.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 (to ip フィールド) -> 検証 -> (form.is_valid が True) 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 ドキュメントを見てみましょう。
The first time you call is_valid() or access the errors attribute of a ModelForm triggers form validation as well as model validation.
フォームバリデーションだけバリデーションしたい...
...
ModelForm ではなくFormsを使用する必要がありますか?
ModelForm を使用しているときに、必要なロジックを使用できますか?