【问题标题】:Django : Get value of each subselect of a SelectDateWidgetDjango:获取 SelectDateWidget 的每个子选择的值
【发布时间】:2012-08-08 12:35:17
【问题描述】:

我的表单有一个非常具体的 HTML 设计,所以我需要它全部用 HTML 编写,而且我不使用默认的表单渲染器。

我在我的 Django 表单中设置了这个 SelectDateWidget。除了 SelectDateWidget 之外,一切正常:如果我的表单无效,我会收集所有相关值并重新填充我的自定义 HTML 字段。问题是我似乎无法在模板中获取 SelectDateWidget 的值。

我尝试了诸如form.mydate_day.valueform.mydate.day_value 之类的东西……但它似乎什么都没有。

谁能帮我解决这个问题? 谢谢。

根据要求, 型号:

class Subscriber(models.Model):
  civilite = models.CharField(max_length=5, verbose_name='Civilite',choices=(('Mlle','Mademoiselle'),('M.','Monsieur'),('Mme','Madame')))
  email = models.EmailField(max_length=255, verbose_name='Email', unique=True)
  nom = models.CharField(max_length=60, verbose_name='Nom')
  prenom = models.CharField(max_length=60, verbose_name='Prenom')
  ville = models.CharField(max_length=50,verbose_name='Ville')
  cp = models.CharField(max_length=5,verbose_name='Code Postal',validators=[RegexValidator(regex='^\d{5}$')])
  date_naissance = models.DateField(auto_now_add=False)
  optin = models.BooleanField(default=True,verbose_name='Optin')
  date_inscription = models.DateField(auto_now_add=True)

形式:

class SubscriberForm(ModelForm):
  class Meta:
    model = Subscriber
    widgets = {
      'civilite': forms.RadioSelect(),
      'date_naissance': extras.SelectDateWidget(years=range(1994,1900,-1)),
    }

观点:

def index(request):
  if request.method == 'POST':
    form = SubscriberForm(request.POST)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/coreg.html')
    else:
    form = SubscriberForm()
  return render(request,'index.html', {'form':form,'days':range(1,31),'months':range(1,12),'years':range(1994,1900,-1)})

模板:

    <label class="lbl" for="jour">Date de naissance :</label>
    <div class="select {% if form.date_naissance.errors  %}error{% endif %}"><span>
      <select name="date_naissance_day" id="jour">
        <option value="--">J</option>
        {% for i in days %}
          <option value="{{i}}" {% if form.date_naissance_day.value == i %}selected{% endif %}>{{i}}</option>
        {% endfor %}
      </select>
    </span></div>
    <div class="select"><span>
      <select name="date_naissance_month" id="mois">
        <option value="--">M</option>
         {% for i in months %}
          <option value="{{i}}" {% if form.date_naissance_month.value == i %}selected{% endif %}>{{i}}</option>
        {% endfor %}
      </select>
    </span></div>
    <div class="select last"><span>
      <select name="date_naissance_year" id="annee">
        <option value="--">A</option>
         {% for i in years %}
          <option value="{{i}}" {% if form.date_naissance_year.value == i %}selected{% endif %}>{{i}}</option>
        {% endfor %}
      </select>
    </span></div>
    <br clear="all" />

【问题讨论】:

  • 好吧,我不能在我的帖子开头说“你好”,它被剥夺了。所以:你好:)
  • 你是如何实现表单的,你是如何在模板中显示它的?
  • 你来了,编辑帖子
  • 什么都没有?也许我可以像地狱一样自定义小部件,以使其看起来像我想要的那样并直接使用它?
  • 你有没有想过如何让它工作?如果是这样,也许您可​​以回答自己的问题并帮助他人,谢谢;)

标签: django widget django-forms


【解决方案1】:

您可以像这样使用 form.data:

{% if form.data.date_naissance_day == i %}selected{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 2021-02-26
    • 1970-01-01
    • 2020-09-27
    • 2013-03-02
    • 2018-10-09
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多