Django 德扬戈元';t将值导入数据库-sqlite3
我正在尝试将值放入django数据库 我的app_name/models.py看起来像:Django 德扬戈元';t将值导入数据库-sqlite3,django,django-models,django-database,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) en fr af de ... 我运行了以下命令: 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)
en
fr
af
de
...
我运行了以下命令:
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行语言代码。该文件看起来像:
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)
en
fr
af
de
...
在manage.py shell中运行此代码时,Django创建了309个语言对象。但是当我尝试在shell->语言(id=1)中键入random id时,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
所以我的问题是哪里会有问题 发生这种情况是因为您没有正确获取
语言
对象
当您使用Language(id=1).code
时,您正在实例化语言对象,并且代码字段中没有任何值
在django中,要获取对象,需要执行Model.objects.get(field=value)
。因此,您的代码变成:
Language.objects.get(id=1).code
您是否也使用
Language.objects.get(id=1)
获取空字符串?否,我看到了我所期望的文本。为什么get()方法显示正确的字符串和语言(id=1)。代码显示空字符串?谢谢这就是Django与db交互的方式。使用该方法。我想是读书的时候了;)