Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django模型中将月份表示为字段_Python_Django_Django Models - Fatal编程技术网

Python 如何在django模型中将月份表示为字段

Python 如何在django模型中将月份表示为字段,python,django,django-models,Python,Django,Django Models,特定日历月应如何表示为与整月(如2015年3月)相关的数据字段,而不是该月内的某一天。Django提供了models.DateField类,但它要求指定日期。我要找的是一个MonthField 我正在寻找处理这种情况的最具python风格和“Django”风格的方法。我已经多次遇到这种情况,我很想知道什么是“正确”的方式来处理它 我知道这个问题。没有讨论基于字符串的方法的优缺点,也没有与其他解决方案进行比较 我正在考虑的一些陈述包括: 使用日期字段并强制将日期设置为月份的1号 使用单个整数,以“

特定日历月应如何表示为与整月(如2015年3月)相关的数据字段,而不是该月内的某一天。Django提供了
models.DateField
类,但它要求指定日期。我要找的是一个
MonthField

我正在寻找处理这种情况的最具python风格和“Django”风格的方法。我已经多次遇到这种情况,我很想知道什么是“正确”的方式来处理它

我知道这个问题。没有讨论基于字符串的方法的优缺点,也没有与其他解决方案进行比较

我正在考虑的一些陈述包括:

  • 使用日期字段并强制将日期设置为月份的1号
  • 使用单个整数,以“1900年1月以来的月份”的方式进行解释
  • 使用两个独立的整型字段:年和月
  • 使用字符字段,如“2015-03”
  • 我认为解决方案是使用自定义字段(子代码类<代码>模型。字段< /代码>),使用上面的一个表示,关联的小部件,验证等,但我也会考虑提供其他解决方案的答案。


    类似的问题是与特定周相关的数据,例如员工时间表。过去我通过创建一个
    WorkWeek
    模型来处理这个问题,尽管我怀疑这是错误的方法,因为我将数据存储在内置python库中已有的数据库中。

    我建议您继续使用Django,因为这将允许您保留在基于时间的序列上执行的日历查询,并且可能会使您避免过度工程的潜在情况


    显示模型数据时,使用可用功能仅显示一年中的月份。编写数据时,您只需向用户提供一个自定义表单小部件,并将日期更新到表单验证的当月1日。

    您是否建议创建
    模型的子类。DateField
    ?我最终创建了一个使用models.DateField存储db的子类,因此我接受您的答案。FWIW,这里是一个,但用于存储月份和日期(无年份)