我希望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)
答案 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和一个布尔值,如果我只选择年份或整个日期,则会给我。