首页 > 解决方案 > 在Django中使用html输入类型month来显示年月的值

问题描述

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

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

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

这是我的代码片段:

<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>

标签: htmldjangodjango-modelsdjango-viewsdjango-templates

解决方案


将此添加到您的模型中:

@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)

推荐阅读