在Django中,如何在HTML表单中为模型DateField显示日期窗口小部件?

时间:2018-02-19 22:04:36

标签: python django

我是Django的新手并希望做一些简单的事情。

我有一个日期数据库字段,我正在尝试让Django将其显示为' date' HTML表单中的小部件。

以下是我的代码:

models.py

from django.db import models                                                                                                                                   

class DateF(models.Model):
    edate = models.DateField()

forms.py

from django.forms import ModelForm                                                                                                                             
from django import forms
from .models import DateF

class DateForm(forms.ModelForm):
    class Meta:                                                                                                                                                
        model = DateF
        fields = ['edate']

views.py

from django.shortcuts import render                                                                                                                            
from .forms import DateForm

def index(request):
    if request.method == 'POST':
        pass
    else:
        form = DateForm()
    return render(request, 'datef/index.html',{'form':form})

模板文件

<!DOCTYPE html>
<html>
<head>
<title>Date field test</title>                                                                                                                                 
</head>
<body>
<div style="width: 600px;margin: auto;">
    <h2>Date field</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
   </form>
</div>
</body>
</html>

上面显示了一个文本输入字段。

我在基于以下内容的forms.py中尝试了以下操作,但仍无法使其正常工作。

https://stackoverflow.com/questions/660929/how-do-you-change-the-default-widget-for-all-django-date-fields-in-a-modelform

from django.forms import ModelForm
from django import forms
from .models import DateF
from django.forms import fields as formfields
from django.contrib.admin import widgets

class DateForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(DateForm, self).__init__(*args, **kwargs)
        self.fields['edate'].widget = widgets.AdminDateWidget()   

    class Meta:
        model = DateF
        fields = ['edate']

我错过了什么?我需要提供任何JavaScript吗?

0 个答案:

没有答案