Django不会将值导入数据库--sqlite3

时间:2017-07-31 19:20:02

标签: django django-models django-database

我正在尝试将值放到我的django数据库中。

我的app_name / models.py看起来像:

from django.db import models

# Create your models here.

class Language(models.Model):
    id = models.AutoField(primary_key=True)
    code = models.TextField(max_length=14)

我运行了这个命令:

python3 manage.py makemigrations app_name
python3 manage.py migrate app_name

之后我开始将值导入我的数据库。所以我运行这个命令:

python3 manage.py shell

并将此代码放入shell:

from app_name.models import *

with open('lang.txt', 'r') as file:
    for i in file:
        a = Language.objects.create(code=i.strip())

文件lang.txt包含309行语言代码。该文件看起来像:

en
fr
af
de
...

当我在manage.py shell中运行此代码时,Django创建了309个Language对象。但是当我尝试在shell中输入random id时 - > Language(id=1).code它只返回空字符串 - ''

我尝试过使用save()方法,但仍然存在同样的问题。

from definitions.models import *

with open('lang.txt', 'r') as file:
    for i in file:
        a = Language(code=i.strip())
        a.save()

Django版本1.10.1

所以我的问题是哪里可能有问题?

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您没有正确获取Language个对象。

执行Language(id=1).code时,您正在实例化没有给定代码字段值的语言对象。

在django中,要获取对象,请执行Model.objects.get(field=value)。所以你的代码变成了:

Language.objects.get(id=1).code