首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django在以管理形式保存时下降了毫秒。

问django在以管理形式保存时下降了毫秒。
EN

Stack Overflow用户
提问于 2014-06-12 12:10:59
回答 1查看 1K关注 0票数 2

我使用的是MySQL5.7 db和django 1.8,据我所知,它们都支持毫秒。我可以通过mysql在我的数据库中以HH:MM:SS.fff的形式输入时间。(例如00:05:45:100)

当我打开django的管理页面时,它会正确地显示时间(例如00:05:45:100000),但是如果我通过管理表单输入时间并按“保存”,时间就会变成例如00:05:45:000000,这样毫秒就不会像我看起来的那样被保存了。

为什么会这样,有没有办法改变呢?谢谢

admin.py

代码语言:javascript
复制
from django.contrib import admin
from items.models import Maximum
from django import forms

class MaximumAdminForm(forms.ModelForm):
    def __init__(self, *arg, **kwargs):
        super(MaximumAdminForm, self).__init__(*arg, **kwargs)
        self.fields['time_point'] = forms.TimeField(widget=forms.TimeInput(format="%H:%M:%S.%f")) 

    class Meta:
        model = Maximum
        fields = ['item', 'time_point',]

class MaximumAdmin(admin.ModelAdmin):
    form = MaximumAdminForm

    def milliseconds(self, obj):
        return obj.time_point.strftime("%H:%M:%S.%f")[0:12]    

    milliseconds.short_description = 'time point'
    list_display = ('id', 'milliseconds',)

admin.site.register(Maximum, MaximumAdmin)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-12 12:32:36

Django 1.7 目前支持MySQL 5.0.3及更高版本的下一个稳定版本(并不是所有这些版本都支持微秒)。Django 1.8目前是不稳定的主服务器,其支持的版本和发布日期尚未确定。正因为如此,后端截断了value_to_db_time中的微秒

代码语言:javascript
复制
def value_to_db_time(self, value):
    if value is None:
        return None

    # MySQL doesn't support tz-aware times
    if timezone.is_aware(value):
        raise ValueError("MySQL backend does not support timezone-aware times.")

    # MySQL doesn't support microseconds
    return six.text_type(value.replace(microsecond=0))

在支持的数据库文档的DateTime字段部分中可以注意到这一点:

MySQL不存储秒的分数。当存储时间时,秒的分数被截断为零。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24184055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档