11

在使用DateTimeFieldin ModelForms 时,它们看起来像文本字段。我怎样才能让它们在管理员中看起来像?(当我去管理员并添加一个节目时,我将这些字段视为日期字段)

# models.py
class Show(models.Model):
    ...
    start_time = models.DateTimeField("Event Time")
    sale_end_time = models.DateTimeField("Sale End Time")

class ShowForm(ModelForm):

    class Meta:
        model = Show 

# views.py
def createshow(request):
    if request.method == 'POST':
        form = ShowForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/showsaved')
    else:
        form = ShowForm()
        return render(request, 'BizCreateShow.html', {'ShowForm' : form})

在模板中:

<form class="form-horizontal well" action="" method="post">
 {% csrf_token %}
    {{ ShowForm }} </br>
    <input type="submit" value="Submit">
</form>
4

2 回答 2

9

您可以使用 django 小部件来执行此操作。它非常简单且易于实施。下面详细介绍如何使用小部件来使用它。

forms.py中

from django.contrib.admin import widgets

class ShowForm(ModelForm):
    class Meta:
        model = Show 
    def __init__(self, *args, **kwargs):
        super(ShowForm, self).__init__(*args, **kwargs)
        self.fields['start_time'].widget = widgets.AdminSplitDateTime()
        self.fields['sale_end_time'].widget = widgets.AdminSplitDateTime()

模板中

<script type="text/javascript" src="/my_admin/jsi18n/"></script>
<script type="text/javascript" src="/media/admin/js/core.js"></script>

<link rel="stylesheet" type="text/css" href="/media/admin/css/forms.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/base.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/global.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/widgets.css"/>

就是这个。如果我不太清楚,请告诉我。或者您面临任何错误。

于 2013-03-26T18:52:04.647 回答
3

您可能应该使用 jQuery UI 的datepicker 小部件之类的东西:

日期选择器与标准表单输入字段相关联。专注于输入(单击或使用 Tab 键)以在小叠加层中打开交互式日历。选择一个日期,单击页面上的其他位置(模糊输入),或按 Esc 键关闭。如果选择了日期,则反馈显示为输入值。

于 2013-03-26T19:17:26.697 回答