2016-05-16 70 views
0

我有以下的Django模型Django的ORM不空列返回无

class CalculatedResults(models.Model): 
id = models.IntegerField(primary_key=True) 
tmstamp = models.DateTimeField() 
latitude = models.FloatField() 
longitude = models.FloatField() 
magnitude = models.FloatField() 
origin_time = models.DateTimeField() 
actioncode = models.IntegerField(db_column='actionCode', blank=True, null=True) # Field name made lowercase. 
class Meta: 
    managed = False 
    db_table = 'calculated_results' 
    verbose_name = 'Calculated Result' 
    verbose_name_plural = 'Calculated Results' 

和相关MySQL表为:

CREATE TABLE IF NOT EXISTS `calculated_results` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `tmstamp` timestamp(5) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `latitude` double NOT NULL, 
    `longitude` double NOT NULL, 
    `magnitude` double NOT NULL DEFAULT '0', 
    `origin_time` timestamp(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000', 
    `actionCode` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `tmstamp_index` (`tmstamp`), 
    KEY `origin_time_index` (`origin_time`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=814 ; 

当我尝试检索使用python manage.py shell使用下面的代码从表中数据,

form eew_main.models import CalculatedResults 
a = CalculatedResults.objects.all().order_by('-id')[:1] 

我得到Nonetmstamporigin_time但据我调查了这个问题,当我尝试它与Django使用我得到了所有的值相同的mysql用户mysql的下面的SQL查询发送到MySQL

SELECT `calculated_results`.`id` , `calculated_results`.`tmstamp` , `calculated_results`.`latitude` , `calculated_results`.`longitude` , `calculated_results`.`magnitude` , `calculated_results`.`origin_time` , `calculated_results`.`actionCode` 
FROM `calculated_results` 
ORDER BY `calculated_results`.`id` DESC 
LIMIT 1 

所以请帮助我以某种方式找到一种方法来调查和解决这个问题。

谢谢!

+1

它是否为所有日期返回'None',或仅为零日期''0000-00-00 00:00:00.00000''返回? – Alasdair

+0

@Alasdair它为所有值返回null,而不仅仅是零日期 – abyz

+0

@abyz为什么此模型的管理状态为false?它禁止django为此表创建迁移 [在模型中管理](https://docs.djangoproject.com/en/1.10/ref/models/options/) – shalbafzadeh

回答

1

似乎你的表格是在Django之外创建的。 Django的models.DateTimeField将在MySQL中合成为datetime字段,而不是timestamp

检查this answer为类似DateTimeField的实现,在SQL级采用timestamp

+0

感谢您的帮助,但日期是由其他人生成的,只是由django阅读。在生产服务器中它发生,但在开发服务器中没有任何问题 – abyz