0

2つのフィールドを持つクラスがあり、両方のフィールドが空白であるが、少なくとも1つのフィールドを入力したいとします。

class MyClass(models.Model):
   url1 = models.URLField(blank=True)
   url2 = models.URLField(blank=True)

   def clean(self):
      if not self.url1 and not self.url2:
      raise forms.ValidationError('message here')
      return self.url1

2つのフィールドをblank=Trueに設定したからだと思います。ここでclean()を使用することが正しいかどうか、またそこから何を返すかはわかりません。

{{form.non_field_errors}}には何も表示されません

ありがとう

4

1 に答える 1

2

clean()フォームオブジェクトでメソッドを使用できます。現在、Formオブジェクトではなく、データベースモデルでデータ検証を行おうとしています。

フォームの検証について詳しくは、https://docs.djangoproject.com/en/dev/ref/forms/validation/をご覧ください。

from django.db import models
from django import forms

class MyClass(models.Model):
   "Your model"
   url1 = models.URLField(blank=True)
   url2 = models.URLField(blank=True)


class MyClassForm(forms.ModelForm):
    "Your form object"
    def clean(self):
       if not self.cleaned_data['url1'] and not self.cleaned_data['url2']:
           raise forms.ValidationError('message here')
       return self.cleaned_data

    class Meta:
        model = MyClass
于 2012-11-03T11:21:02.593 に答える