【问题标题】:How to specify date field format while creating django objects如何在创建 django 对象时指定日期字段格式
【发布时间】:2019-11-14 11:57:52
【问题描述】:

我有一个模型团队

class Team(models.Model):                             
    team = models.IntegerField(primary_key=True)      
    name = models.CharField(max_length=170)         
    code = models.CharField(max_length=20)          
    logo = models.URLField(null=True)
    country_id = models.ForeignKey('Country',null=True, on_delete=models.SET_NULL)                     
    founded = models.DateField(null=True)
    venue_name = models.CharField(max_length=170)
    venue_surface = models.CharField(max_length=170)
    venue_address = models.CharField(max_length=200)                                                
    venue_city = models.CharField(max_length=150)                                                   
    venue_capacity = models.IntegerField(null=True)                                                 
    lastModified = models.DateTimeField(auto_now=True)

我想从此模型创建对象,其中 founded 字段的输入数据仅为年份数据,例如 1970

我该怎么做。提前致谢

【问题讨论】:

  • @ChitrankDixit 我的问题与您附加的链接上的问题不重复。仔细阅读
  • 在问题的主题中,您询问如何在创建 django 对象时指定日期字段格式,但在描述中您还询问日期格式以及查询数据的逻辑。没有问题,但如果你问这样的问题,请说明你到目前为止尝试了什么,主题和相关描述清晰,它会为人们提供清晰的信息,因此人们可以更好地回答你。
  • 您的意思是说您希望日期字段以这些方式存储日期:只有年/年和月/整个日期?如果是这种情况,您将不得不使用单独的字段
  • @Mehak 我只想在我的数据库中存储年份信息而不是月份和日期

标签: django django-models


【解决方案1】:

如果您只想存储创建字段的年份,您可以尝试PositiveSmallIntegerField

class Team(models.Model):                             
    # Other Fields                   
    founded = models.PositiveSmallIntegerField(null=True)

您可以添加自己的验证器或使用模型的clean 方法来验证用户是否输入了正确的年份。

如果您只想使用DateField,那么在这种情况下您必须为 Date 和 Month 提供默认值,如果年份是 1970,它可以像 01/01/1970 和年份一样存储可以使用obj.founded.year访问

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多