【问题标题】:how to convert date to date drop down and drop down could be separate day, month,year如何将日期转换为日期下拉和下拉可以是单独的日、月、年
【发布时间】:2019-10-13 01:51:00
【问题描述】:

]2

<p>
  <label for="id_date_of_birth">Date of birth:</label>
  <input type="date" name="date_of_birth" value="2019-06-14" id="id_date_of_birth">
</p>

我正在使用 django 从数据库中获取数据,我试图在下拉日期中显示,但我正在获取日期表

【问题讨论】:

  • &lt;input type="text"&gt; 转换为&lt;select&gt;&lt;/select&gt;
  • previous 它只是文本我转换为日期 $('#id_date_of_birth').get(0).type = 'date';
  • 很久以前我在 CodeReviews 上创建了this 帖子,但这会对您有所帮助。请参考
  • @BTR 您能否提供一个屏幕截图,以便提供解决方案。
  • 我添加了你可以在那里查看

标签: javascript jquery html css django


【解决方案1】:

在您的 Django 表单中,将 DateField 的小部件设置为 SelectDateWidget(从 django.forms.widgets 导入)。那么你只需要在你的模板中做{{ form.date_of_birth }}

class ProfileUpdateView(UpdateView):
    form_class = MyProfileForm

class MyProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        widgets = {'date_of_birth': SelectDateWidget()}

【讨论】:

  • yaa 我已经在我的表单中使用了 SelectDateWidget 但这里我正在从数据库中获取数据并且我正在使用 UpdateView
  • 所以?然后我不明白这个问题。使用 UpdateView 不会阻​​止您将表单与 SelectDateWidget 一起使用
  • SelectDateWidget 仅适用于日期应该将数据从最终用户获取到数据库,并且它显示的下拉列表很好,但我正在使用 Update View b> 用于更新数据库中已存在的数据。在我的 html 中,我使用 {{form.as_p}} 如果我使用 {{form.date_of_birth}} 与 16/10/2019 相同,但我也需要在这里像 SelectDateWidget 一样下拉
【解决方案2】:

您可以将字段分成 3 个部分(您需要在 django 中获取日/月/年部分)为 3 个选择字段,如下所示:

<p>
  <label>Day:
    <select name="day">
      <option>1</option>
      <option>2</option>
      ...
      <option>31</option>
    </select>
  </label>
  <label>Month:
    <select name="month">
      <option>1</option>
      <option>2</option>
      ...
      <option>12</option>
    </select>
  </label>
  <label>Year:
    <select name="year">
      <option>1900</option>
      <option>1901</option>
      ...
      <option>3000</option>
    </select>
  </label>

但我会推荐这个。这使得输入日期变得更加困难(多次单击和滚动),用户无法复制/粘贴日期,或从可视日历中进行选择。您还需要添加自己的客户端逻辑,以确保用户不会选择像 2 月 31 日这样的日期。

【讨论】:

  • 哎呀太难了,我的客户要求是单独的日期月年下拉表格
【解决方案3】:

你在寻找这样的东西吗?

如果你……不是个好主意

<select name='day'>
  <option value='1'>1</option>
  <option value='2'>2</option>
  <option value='3'>3</option>
  <option value='4'>4</option>
  <option value='5'>5</option>
  <option value='6'>6</option>
  <option value='7'>7</option>
  <option value='8'>8</option>
  <option value='9'>9</option>
  <option value='10'>10</option>
  <option value='11'>11</option>
  <option value='12'>12</option>
  <option value='13'>13</option>
  <option value='14'>14</option>
  <option value='15'>15</option>
  <option value='16'>16</option>
  <option value='17'>17</option>
  <option value='18'>18</option>
  <option value='19'>19</option>
  <option value='20'>20</option>
  <option value='21'>21</option>
  <option value='22'>22</option>
  <option value='23'>23</option>
  <option value='24'>24</option>
  <option value='25'>25</option>
  <option value='26'>26</option>
  <option value='27'>27</option>
  <option value='28'>28</option>
  <option value='29'>29</option>
  <option value='30'>30</option>
  <option value='31'>31</option>
</select>

<select name='month'>
  <option value='1'>1</option>
  <option value='2'>2</option>
  <option value='3'>3</option>
  <option value='4'>4</option>
  <option value='5'>5</option>
  <option value='6'>6</option>
  <option value='7'>7</option>
  <option value='8'>8</option>
  <option value='9'>9</option>
  <option value='10'>10</option>
  <option value='11'>11</option>
  <option value='12'>12</option>
</select>

<select name='day'>
  <option value='2019'>2019</option>
  <option value='2018'>2018</option>
  <option value='2017'>2017</option>
  <option value='2016'>2016</option>
  <option value='2015'>2015</option>
  <option value='2014'>2014</option>
  <option value='2013'>2013</option>
  <option value='2012'>2012</option>
  <option value='2011'>2011</option>
  <option value='2010'>2010</option>
  <option value='2009'>2009</option>
  <option value='2008'>2008</option>
  <option value='2007'>2007</option>
  <option value='2006'>2006</option>
  <option value='2005'>2005</option>
  <option value='2004'>2004</option>
  <option value='2003'>2003</option>
  <option value='2002'>2002</option>
  <option value='2001'>2001</option>
  <option value='2000'>2000</option>
  <option value='1999'>1999</option>
  <option value='1998'>1998</option>
  <option value='1997'>1997</option>
  <option value='1996'>1996</option>
  <option value='1995'>1995</option>
  <option value='1994'>1994</option>
  <option value='1993'>1993</option>
  <option value='1992'>1992</option>
  <option value='1991'>1991</option>
  <option value='1990'>1990</option>
</select>

【讨论】:

  • yaa yaa 我需要这样,但我需要名称而不是月份数
  • 然后只需将html更改为月份而不是数字即可:)
  • 很好,如何拆分我的价值的日、月和年,以及如何将单独的日、月和年插入到有问题的特定选择标签中
  • 他们已经分裂了,把“1”改成“一月”等等:)
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多