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
我正在尝试将值放入我的 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