Django模型日期字段中可选的年/月/日

时间:2012-07-05 22:51:39

标签: python django datetime date django-models

我希望Django模型有一个日期字段,其中年,月和日都是可选的。示例值可以与2008一样通用,也可以与May 10, 2008一样具体。是否可以定义DateField以这种方式行事?或者我最好将年/月/日定义为单独的整数,像这样?

model Book(models.Model):
    publication_year = models.IntegerField(blank=True, null=True)
    publication_month = models.IntegerField(blank=True, null=True)
    publication_day = models.IntegerField(blank=True, null=True)

2 个答案:

答案 0 :(得分:6)

https://github.com/dracos/django-date-extensions处的django-date-extensions(由我完全用于此目的)包括一个ApproximateDate对象,用于处理可能没有月份或一天的日期。

答案 1 :(得分:2)

Django类DateTimeField基于python datetime.datetime类,其中年,月和日是强制性的:

datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

在你的位置,我不会定义三个整数字段,而是使用Django DateTimeField和一个布尔值,如果我只选择年份或整个日期,则会给我。