Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 1.8 DateTimeInput存储为UnixTimestamp_Django_Twitter Bootstrap_Datetime_Datetimepicker - Fatal编程技术网

Django 1.8 DateTimeInput存储为UnixTimestamp

Django 1.8 DateTimeInput存储为UnixTimestamp,django,twitter-bootstrap,datetime,datetimepicker,Django,Twitter Bootstrap,Datetime,Datetimepicker,Django 1.8中的DateTimeInput字段有问题 使用以下表格: def\uuuu init\uuuu(self,*args,**kwargs): “”“用于更改字段行为的附加初始化函数” """ super(UpdateMaintenanceForm,self)。\uuuuuu初始化(*args,**kwargs) self.fields['name'].widget=forms.TextInput(attrs={'class':'form control'}) self.fiel

Django 1.8中的DateTimeInput字段有问题

使用以下表格:

def\uuuu init\uuuu(self,*args,**kwargs):
“”“用于更改字段行为的附加初始化函数”
"""
super(UpdateMaintenanceForm,self)。\uuuuuu初始化(*args,**kwargs)
self.fields['name'].widget=forms.TextInput(attrs={'class':'form control'})
self.fields['description']=forms.CharField(
required=False,widget=forms.Textarea(attrs={'class':'formcontrol'})
)
self.fields['active_since']=forms.DateTimeField(
input_formats=[%d.%m.%Y%H:%m'],widget=forms.DateTimeInput(attrs={'class':'form control'})
)
self.fields['active_till']=forms.DateTimeField(
input_formats=[%d.%m.%Y%H:%m'],widget=forms.DateTimeInput(attrs={'class':'form control'})
)
self.initial['active\u since']=datetime.fromtimestamp(self.initial['active\u since']).strftime(“%d.%m.%Y%H:%m”)
self.initial['active\u till']=datetime.fromtimestamp(self.initial['active\u till']).strftime(“%d.%m.%Y%H:%m”)
我将日期作为unix时间戳存储在数据库中。 添加日期时,我收到错误消息“输入有效日期/时间”。进入调试器时,我发现错误来自为IntegerFields定义的to_python方法。问题对我来说很清楚,我不能将datetime对象添加到整数字段中。但我不想将日期作为日期时间存储到数据库中。因此,我需要修改to_python方法,将datetime对象转换为unix时间戳。
最好的方法是什么?为我的模型编写一个自定义字段,或者是否有方法使用own to_python方法操作小部件?

通过对模型进行子类化解决了这个问题。Integerfield并添加own to_python转换:

类UnixDateTime(models.IntegerField):


通过将models.Integerfield子类化并添加own to_python转换解决了此问题:

类UnixDateTime(models.IntegerField):

def to_python(self, value):

    if value is None:
        return value
    if isinstance(value, int):
        return value
    if isinstance(value, datetime):
        return mktime(value.timetuple())
    else:
        raise exceptions.ValidationError(
            self.error_messages['invalid'], code='invalid', params={'value': value},
        )