Django表单中的daterangefield

huangapple go评论80阅读模式
英文:

Django daterangefield in a form

问题

You can use the "DateInput" widget in your Django form to display the "electable_time" field as a date field that allows users to pick a date from a calendar. Here's how to update your form in Chinese:

forms.py

  1. from django import forms
  2. from django.forms import DateInput # Import DateInput widget
  3. class CreateCommissionElection(forms.ModelForm):
  4. class Meta:
  5. model = CommissionElection
  6. fields = ['electable_time',]
  7. widgets = {
  8. 'electable_time': DateInput(attrs={'type': 'date'}),
  9. }

这个更改将使用 "DateInput" 将 "electable_time" 字段显示为日期字段,允许用户从日历中选择日期。

英文:

I have a model looking like this:

models.py

  1. class CommissionElection(models.Model):
  2. electable_time = DateRangeField()

And my form looks like this:

forms.py

  1. class CreateCommissionElection(forms.ModelForm):
  2. class Meta:
  3. model = CommissionElection
  4. fields = ['electable_time',]

Right now the electable time displays like this:
Django表单中的daterangefield

What widget is needed to make the fields datefields instead of charfields, so you can pick a date out of a calendar instead of writing it out?

答案1

得分: 1

你可以为date字段指定不同的小部件:

  1. from django.forms.widgets import DateInput
  2. class MyDateInput(DateInput):
  3. input_type = 'date'

接下来,我们可以为这个字段创建一个DateField表单字段:

  1. from django.forms.fields import DateField
  2. class MyDateField(DateField):
  3. widget = MyDateInput

然后在DateRangeField中重用它:

  1. from django.contrib.postgres.forms.ranges import DateRangeField
  2. class MyDateRangeField(DateRangeField):
  3. base_field = MyDateField

然后我们可以将它用作表单字段:

  1. class CreateCommissionElection(forms.ModelForm):
  2. electable_time = MyDateRangeField()
  3. class Meta:
  4. model = CommissionElection
  5. fields = ['electable_time']
英文:

You can specify a different widget for a date field:

<pre><code>from django.forms.widgets import DateInput

class MyDateInput(DateInput):
<b>input_type = 'date'</b></code></pre>

next we can make a form DateField field for this:

<pre><code>from django.forms.fields import DateField

class MyDateField(DateField):
<b>widget = MyDateInput</b></code></pre>

and reuse that in a DateRangeField:

<pre><code>from django.contrib.postgres.forms.ranges import DateRangeField

class MyDateRangeField(DateRangeField):
<b>base_field = MyDateField</b></code></pre>

then we can use this as field:

<pre><code>class CreateCommissionElection(forms.ModelForm):
electable_time = <b>MyDateRangeField()</b>

  1. class Meta:
  2. model = CommissionElection
  3. fields = [
  4. &#39;electable_time&#39;,
  5. ]&lt;/code&gt;&lt;/pre&gt;

huangapple
  • 本文由 发表于 2023年5月6日 17:30:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/76188146.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定