跳转到主要内容

Django字段,用于存储不包含年份的日期。

项目描述

提供Django模型和表单字段,用于存储不包含年份的日期。

一个用例是收集不要求出生年份的生日。

Build status Python versions Django compatibility django-yearlessdate can be installed via wheel django-yearlessdate can be installed via wheel

先决条件

  • Django 1.8 - 1.11, 2.0

  • Python 2.7, 3.6

(其他版本可能功能正常,但未测试。)

安装

pip install django-yearlessdate

使用

该软件包提供了两个模型字段,YearlessDateFieldYearField

YearlessDateField

YearlessDateField存储一个不带年份的日期:例如1月1日。

它的默认小部件由两个下拉列表组成,一个用于天数,一个用于月份。

它只允许可能有效的日期。例如,用户无法将日期设置为4月31日。2月29日被视为有效日期。

以下是一个示例models.py,声明了一个具有必需的无年份日期的模型

from django.db import models
from djangoyearlessdate.models import YearlessDateField

class MyModel(models.Model):
    birthday = YearlessDateField()

可以在模型实例上像这样访问YearlessDateField的值

>>> a = MyModel.objects.get(id=1)
>>> a
<MyModel: 4 August 2011>
>>> a.birthday.day
4
>>> a.birthday.month
8
>>> print a.birthday
4 August

它们也可以按预期进行比较或排序,例如

>>> m = MyModel.objects.all()
>>> m
[<MyModel: 4 August 2011>, <MyModel: 30 June 2013>]
>>> m[0].birthday > m[1].birthday
True
>>> m.order_by('birthday')
[<MyModel: 30 June 2013>, <MyModel: 4 August 2011>]

YearField

YearField是一个非常简单的模型字段,存储年份作为整数,并确保提供的年份在1900至2200之间

from django.db import models
from djangoyearlessdate.models import YearField

class MyModel(models.Model):
    year = YearField(null=True, blank=True)

由于缺乏可配置性,不推荐使用 YearField。你几乎肯定可以使用 SmallIntegerFieldMinValueValidatorMaxValueValidator 结合使用来获得更好的效果。

运行测试

设置

  1. 请确保您已安装最新版本的 tox。

  2. 克隆此仓库。

运行测试

从该仓库的根目录,只需运行

tox

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

django-yearlessdate-1.3.1.tar.gz (4.6 kB 查看哈希值)

上传时间

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面