我正在尝试将值放到我的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
所以我的问题是哪里可能有问题?
答案 0 :(得分:2)
这种情况正在发生,因为您没有正确获取Language
个对象。
执行Language(id=1).code
时,您正在实例化没有给定代码字段值的语言对象。
在django中,要获取对象,请执行Model.objects.get(field=value)
。所以你的代码变成了:
Language.objects.get(id=1).code