【问题标题】:Using html input type month to show the value of year and month in DjangoDjango中使用html输入类型month显示年份和月份的值
【发布时间】:2021-08-12 22:33:27
【问题描述】:

我有一个输入类型月份,我要求用户输入工作的 start_month 和 start_year。但是,字段月份是可选的。像一个用户只能指定起始年份。在我的模型中,我将 start_month 存储为具有诸如“一月”、“二月”之类的值的 CharField。我将 start_year 存储为 IntegerField。我已经存储了值,我什至成功地检索了它们,如果我这样做,它们就会显示在模板中 {{ job.start_month }}

问题是如果用户只能有年份和月份或年份,我如何通过输入类型月份中的 value 属性显示它?

请帮忙:((( 注意:我对 Django 表单不满意:/

这是我的代码 sn-p:

<div class="form-group col-md-6">
    <label for="start">From:</label>
    <input style="margin-left: 5px;" type="month" class="start_date" value=" 
    {% if job.start_year and job.start_month %}{{ job.start_year }}-{{ 
    job.start_month_as_number }}{% else %} {{ job.start_year }}-{% endif %}" 
    name="start">
</div>

【问题讨论】:

  • 展示你的模型
  • @Sumithran 我编辑了我的代码。有没有办法让月份名称变成数字?就像一月变成01?如果我硬编码月份编号,此解决方案适用于一种情况

标签: html django django-models django-views django-templates


【解决方案1】:

将此添加到您的模型中:

@property
def start_month_as_number(self):
    if not self.start_month:
        return ""
    month_dict = {
        "January":"01",
        "February":"02",
        "March":"03",
        "April":"04",
        "May":"05",
        "June":"06",
        "July":"07",
        "August":"08",
        "September":"09",
        "October":"10",
        "November":"11",
        "December":"12",        
    }
        return month_dict[self.start_month]

然后在你的模板中你可以这样打印:{{job.start_month_as_number}}

为了安全起见,您还需要将选项参数添加到 start_month 字段。

month_choices = ["January","February","March","April","May","June","July","August",September"","October", "November", "December"]

class StudentWorkExperience(models.Model):
...
    start_month = models.CharField(max_length=10, choices=month_choices, null=True, blank=True)

【讨论】:

  • @E Paul,这条线在做什么 {{job.start_month_as_number}}?一般我知道start_month可以通过job.start_month访问
  • @E Paul,如果你能快速引导我完成它会很高兴
  • 它将月份名称转换为数字。随你所需。
  • @E Paul 好吧。 N当我没有一个月但只有一年的情况下怎么办?抱歉打扰你了
  • 它将返回一个空字符串并且不会显示月份。我不太明白你想做什么。
猜你喜欢
  • 2011-06-11
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 2019-03-03
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
相关资源
最近更新 更多