デフォルトの DateField() 検証では、月、日、年を挿入するために使用できる形式がいくつかあります。ただし、ユーザーが年または月、日、年のみを入力できるようにする必要があります。
たとえば、同じフィールドに「5/10/2003」または「2003」を挿入すると、検証に合格します。また、'2003' が挿入された場合、'1/1/2003' (または同様のもの) にデフォルト設定する必要がありますか、それともこれを行うためのより良い方法はありますか?
最後に、モデル内で clean() メソッドをオーバーライドして、複数のフォームでコードを再利用する必要がないようにすることはできますか? すなわち:
class Project(models.Model):
name = models.CharField(max_length=100)
start_date = models.DateField()
## other fields
def clean(self):
# clean other fields as normal
# override start_date
または、次のようになります。
def validate_date(value):
""" Validate date to allow YYYY """
## Raise error on Validation fail
class Project(models.Model):
name = models.CharField(max_length=100)
start_date = models.DateField()
## other fields
def clean(self):
# clean other fields as normal
# override start_date