Django 1.10旧版数据库-无法检索对象

时间:2018-08-09 07:12:51

标签: python django database sqlite

我有一个很小的(到目前为止)遗留数据库,我使用

在Django中自动生成

python manage.py inspectdb > models.py

我将其放入保存应用程序的python包中,并添加到我的INSTALLED_APPS设置中。

我跑了:python manage.py makemigrations app_name

  

“ app_name”的迁移:     app_name / migrations / 0002_auto_20180809_0453.py

下一步:python manage.py migrate app_name

  

要执行的操作:     应用所有迁移:app_name   运行迁移:     正在应用app_name.0001_initial ...确定     正在应用app_name.0002_auto_20180809_0453 ...确定

我检查了是否使用python manage.py sqlmigrate app_name 0001创建了模型,这表明创建了多个模型。

我的models.py文件如下:

from __future__ import unicode_literals

from django.db import models


class Test(models.Model):
    date = models.FloatField(blank=True, null=True)
    shift = models.FloatField(blank=True, null=True)
    timer = models.FloatField(blank=True, null=True)
    target_produce = models.FloatField(blank=True, 
null=True)
    actual_produce = models.FloatField(blank=True, 
null=True)
    oee = models.FloatField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'Test'

我正在尝试从views.py访问我的数据库。这是我的代码:

File: views.py                              

from __future__ import unicode_literals

from django.shortcuts import render
from django.http import HttpResponse

from lineoee.models import Test

# Create your views here.
def index(request):
        context = {}

        lines = Test.objects.date() # <-- Error here
        print(lines)
        return render(request, 
       'lineoee/index.html',context)

我收到归因错误

  

“经理”对象没有属性“日期”

我尝试实施解决方案here,并添加了UserManager导入和objects = UserManager(),但最终还是

  

“ Usermanager”对象没有属性“ date”

关于如何消除此错误并正确访问旧数据库中数据的任何建议?

2 个答案:

答案 0 :(得分:1)

您需要照做,

Test.objects.all().values('date')

如果您需要打印各自的数据,

for i in Test.objects.all().values('date'):
    print i['date']

for i in Test.objects.all().values_list('date', flat=True):
    print i

答案 1 :(得分:0)

“对象”对象不是数据本身。正如Django告诉您的那样,它是一个允许您访问数据的管理器。为了从中获取数据,您应该使用其方法之一:get()用于单个数据条目,all()或filter()或exclude()用于条目列表。例如

lines = Lineoee1.objects.all()   # retrieves all data from Lineoee1 model
lines[0].date                    # retrieves date field from the first entry

或者,如果您只想获取日期,请尝试将values_list()方法与字段名列表一起使用:

dates = Lineoee1.objects.values_list('id', 'date')

添加了“ id”作为额外字段来标识日期所属的条目-您可以将其删除或替换为拥有的任何主键。

有关在django docs查询的更多信息