在DateTimeField
中使用ModelForm
时,它们看起来像文本字段。我怎样才能让他们看起来像在管理员? (当我去管理员并添加一个节目时,我将字段视为日期字段)
# 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>
答案 0 :(得分:9)
您可以使用django小部件执行此操作。它非常简单易实现。 Bellow是如何使用小部件来使用它的详细信息。
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"/>
就是这样。如果我不太清楚,请告诉我。或者您遇到任何错误。
答案 1 :(得分:3)
您应该使用类似jQuery UI的datepicker widget:
datepicker绑定到标准表单输入字段。专注于 输入(单击或使用Tab键)打开a中的交互式日历 小覆盖。选择一个日期,单击页面上的其他位置(模糊了 输入),或按Esc键关闭。如果选择了日期,则反馈是 显示为输入值。