django - Django 中的 UpdateView 不是从数据库的 datetimefield 加载时间,它是脆的形式吗?
问题描述
我有一个非常简单的表格:
class OnSiteLogForUserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(OnSiteLogForUserForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-4'
self.helper.field_class = 'col-lg-8'
self.helper.add_input(Submit('submit', 'Submit'))
class Meta:
model=OnSiteLog
fields = ('user', 'checkIn', 'checkOut', 'notes', 'location')
widgets = {
'checkIn':DateTimeInput(attrs={
'class':'datepicker form-control',
'id' : 'datetimepicker1',
'tabindex' : '1',
'placeholder' : 'MM/DD/YYYY hh:mm',
'autocomplete':'off',
}, format='%m/%d/%Y'),
'checkOut':DateTimeInput(attrs={
'class':'datepicker form-control',
'id' : 'datetimepicker2',
'tabindex' : '2',
'placeholder' : 'MM/DD/YYYY hh:mm',
'autocomplete':'off',
}, format='%m/%d/%Y'),
'location' : TextInput(attrs={'tabindex':'3', 'size': 40, 'placeholder':'Location'}),
'notes' : Textarea(attrs={'tabindex':'4', 'placeholder':'Notes'}),
}
在视图中单击编辑时加载
class LogUpdateView(UpdateView):
model = OnSiteLog
form_class = OnSiteLogForUserForm
template_name = 'log/log_form.html'
success_url = '/'
def get_context_data(self, **kwargs):
context = super(LogUpdateView, self).get_context_data(**kwargs)
log = context['object']
context['log_id'] = log.id
theLog = OnSiteLog.objects.get(pk=log.id)
log_form = OnSiteLogForUserForm(instance=theLog)
context['log_form'] = log_form
return context
def post(self, request, *args, **kwargs):
print("Posting...")
super(LogUpdateView, self).post(request, *args, **kwargs)
return HttpResponseRedirect(self.success_url)
def form_invalid(self, form):
print("form is invalid")
print(form.errors)
return HttpResponse("form is invalid.. this is just an HttpResponse object")
但是当表单出现时,签入或结帐字段有日期但没有时间......现在当我创建它时,日期选择器可以很好地完成时间。也很有趣,它可以让您节省时间。
所以不知道为什么我的更新加载日期而不是时间,我什至将表单小部件更改为 DateTimeInput(它是 DateInput),但无济于事。
甚至不知道在哪里看这个,html 使用脆的形式:
{% extends "base.html" %}
{% load static %}
{% load crispy_forms_tags %}
{% block title %}Log Entry{% endblock %}
{% block page-js %}
<script src="{% static 'js/jquery.min.js' %}"></script>
<!-- jQuery UI -->
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<!-- Popper js -->
<script src="{% static 'js/popper.min.js' %}"></script>
<!-- Bootstrap js -->
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<!-- All js -->
<script src="{% static 'js/uza.bundle.js' %}"></script>
<!-- Active js -->
<script src="{% static 'js/default-assets/active.js' %}"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.min.js"></script>
<script type="text/javascript">
$(document).on('click', '[data-toggle="lightbox"]', function(event) {
var j = jQuery.noConflict();
event.preventDefault();
j(this).ekkoLightbox();
});
$(function() {
var j = jQuery.noConflict();
//j('.dateinput').datepicker({ dateFormat: "M dd, yy" });
//j('.dateinput').datepicker({ dateFormat: "mm/dd/yy" });
j('#datetimepicker1').datetimepicker();
j('#datetimepicker2').datetimepicker();
});
</script>
{% endblock %}
{% block content %}
<div class="breadcrumb-area">
<!-- Background Curve -->
<div class="breadcrumb-bg-curve">
<img src="{% static '/img/core-img/curve-5.png' %}" alt="">
</div>
</div>
<div class="container">
<h2> Add a Log Entry {{ user.username }} </h2>
<div class="row">
<div class="col-sm">
{% crispy form %}
</div>
</div>
</div>
{% endblock %}
解决方案
问题看起来像来自:(checkOut 小部件有同样的问题)
'checkIn':DateTimeInput(attrs={
'class':'datepicker form-control',
'id' : 'datetimepicker1',
'tabindex' : '1',
'placeholder' : 'MM/DD/YYYY hh:mm',
'autocomplete':'off',
}, format='%m/%d/%Y'),
format='%m/%d/%Y'
. 尝试将其更改为包括时间,看看是否能解决您的问题。
推荐阅读
- javascript - 我可以在对象上使用 indexOf() 吗?
- html - 删除一个 div 上的正文边距
- php - WordPress 性能困境
- ios - react-native 链接错误“未知依赖项”
- javascript - 从元素中获取单个类名作为字符串
- node.js - 对 Node.js 中的事件循环、多线程、readFile() 执行顺序有疑问?
- r - 如何使用 R 从 Google 表格或 Google 表格单元格读取或下载图像?
- c++ - 使用 memcpy 函数 C++ 复制 char 数组
- twilio - Twilio 根据来电号码转接来电
- mongodb - 您如何编写一个考虑多个数字并对其进行排序的查询