Django:带有 "django-widget-tweaks" 的 DatePicker

Django: DatePicker with "django-widget-tweaks"

美好的一天,

我正在为我在 Django 中的输入字段之一尝试 "create" DatePicker,但它不起作用!

在我的 models.py:

class Customer(models.Model):
    ...
    name = models.CharField()
    date = models.DateField()

在我的 views.py:

def Page(request):
    CustomerFormSet = modelformset_factory(Customer, fields='__all__')
    formset = CustomerFormSet (queryset=Customer.objects.none())
    ...
    context = {'formset': formset}
    return render(request, 'app/base.html', context)

在我的模板中:

{% extends 'app/base.html' %}
{% load widget_tweaks %}

<form actions="" method="POST">
      {% csrf_token %}
      {{ formset.management_form }}
      {% for form in formset %}
          {{ form.id }}

        ...
        {% render_field form.name class="form-control" %}
        ...
        {% render_field form.date class="form-control" %}
        ...

现在我的第一个输入框工作正常了!它 returns 适合 Bootstraps "Form-Group"-Layout 的 Field。但是我的日期 InputField 仍然是一个简单的 TextInput,没有可供选择的日历表。

我的问题是:我是不是做错了,还是这样获取不到这样的功能?

谢谢,祝大家有个愉快的夜晚。

如果您正在使用 ModelForm,请尝试:

from django import forms

class DateInput(forms.DateInput):
    input_type = 'date'

class DataTreinoForm(forms.ModelForm):
    class Meta:
        model = models.YOURMODEL
        fields = _all_
        widgets = {
            'dateField': DateInput
        }

默认格式为mm/dd/yyyy。不知道怎么改成这样。

我也刚刚解决了这个问题。将 type="date" 添加到 render_field.

{% render_field form.date type="date" class="form-control" %}

您可以在此处添加任何输入标签属性,这很方便,因为

  1. 修改模板上的表单外观而不是 forms.py,这在概念上是一致的
  2. 当您保存模板时,它不会重新加载应用程序,因此使用 html
  3. 可以更快地进行测试