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

Django won't import values to database - sqlite3

我正在尝试将值放入我的 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 个语言对象。但是当我尝试在 shell -> Language(id=1).code 中键入 运行dom id 时,它 return 只有空字符串 - ''

我也尝试过使用 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

所以我的问题是哪里会出问题?

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

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

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

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