4

models.py

class Completion(models.Model):
    start_date = models.DateField()
    end_date = models.DateField()
    batch = models.ForeignKey(Batch)
    topic = models.ForeignKey(Topic)

上記のコードDateField()では、管理サイトに日付選択ウィジェットを生成します。このウィジェットでは、適切な日付を選択するか、テキストボックスに手動で入力できます。問題は次のとおりです。

  1. 2000年から2100年までの日付を選択するようにユーザーを制限するにはどうすればよいですか。

  2. ユーザーがテキストボックスに手動で日付を入力すると、yy-mm-dd形式のすべての日付が受け入れられます。検証が必要なので、存在しない日付は入力しないでください。

4

1 に答える 1

11

バリデーターをチェックしてください!

まず、バリデーターを定義します。

from django.core.exceptions import ValidationError

def validate_current_century(value):
    if value < 2000 or value > 2100:
        raise ValidationError(u'%s is not a valid year!' % value)

これで、モデルフィールドで使用できます。

class Completion(models.Model):
    start_date = models.DateField(validators=[validate_current_century])
    end_date = models.DateField(validators=[validate_current_century])

また、フォームフィールドでも:

from django import forms

class MyForm(forms.Form):
    current_century_field = forms.DateField(validators=[validate_current_century])

上記にリンクされているドキュメントの詳細。

于 2011-02-16T06:39:53.903 に答える