也許這將有助於:
DayMonthField和YearField
Django的yearlessdate - https://github.com/seddonym/django-yearlessdate
YearMonthField
YEARMONTH_INPUT_FORMATS = (
'%Y-%m', '%m/%Y', '%m/%y', # '2006-10', '10/2006', '10/06'
)
class YearMonthField(CharField):
default_error_messages = {
'invalid': _('Enter a valid year and month.'),
}
def __init__(self, input_formats=None, *args, **kwargs):
super(YearMonthField, self).__init__(*args, **kwargs)
self.input_formats = input_formats
def clean(self, value):
if value in validators.EMPTY_VALUES:
return None
if isinstance(value, datetime.datetime):
return format(value, '%Y-%m')
if isinstance(value, datetime.date):
return format(value, '%Y-%m')
for fmt in self.input_formats or YEARMONTH_INPUT_FORMATS:
try:
date = datetime.date(*time.strptime(value, fmt)[:3])
return format(date, '%Y-%m')
except ValueError:
continue
raise ValidationError(self.error_messages['invalid'])
class MyModel(models.Model):
yearmonth = YearMonthField()
,如果你有問題,我會回答你的明天。需要睡覺 – catherine 2013-03-10 17:43:07
嗨!當我實現它時,它向我展示了'(fields.E120)CharFields必須定義一個'max_length'屬性。有什麼建議麼? – 2016-08-11 21:45:23
@Abhishek Bhatia您需要爲每個CharField放置max_length = 100(或任何數字)。 Django要求您使用此參數,如下所示:var = model.CharField(max_length = 100) – MrVocabulary 2017-06-12 14:21:27