在 Django 1.9.2 数据库 sqlite3 中插入列表
Posted
技术标签:
【中文标题】在 Django 1.9.2 数据库 sqlite3 中插入列表【英文标题】:Insert an list in Django 1.9.2 database sqlite3 【发布时间】:2016-05-23 01:47:59 【问题描述】:我想在 Django 的数据库中存储一个列表。我应该使用哪个模型字段以及如何使用。我试过 ArrayField 但它没有列出。
from django.contrib.postgres.fields import ArrayField
from django.db import models
class signup(models.Model):
userid=models.CharField(max_length=10)
password=models.CharField(max_length=10)
list=ArrayField(models.IntegerField(null=True,blank=True),size=5,null=True)
score=models.IntegerField(default=0)
【问题讨论】:
ArrayField 特定于 PostgreSQL。你列出的是什么样的?都是整数吗?您是否需要对列表进行查询? 列表由整数组成。我需要阅读和修改列表中的每个元素 您可以尝试将它们存储在CharField
中,方法是在存储时将列表转换为字符串 (";".join(my_list)
),然后在读取时将列表转换为字符串 (my_model.list.split(";")
)
【参考方案1】:
您需要为ArrayField()
定义一个默认类型,在这种情况下,它需要定义为default=list
。
另外,不能使用str
、list
、int
等关键字作为变量名!
您的代码应如下所示:
from django.contrib.postgres.fields import ArrayField
from django.db import models
class signup(models.Model):
userid=models.CharField(max_length=10)
password=models.CharField(max_length=10)
lst=ArrayField(
models.IntegerField(null=True,blank=True),
size=5,
default=list,
null=True
)
score=models.IntegerField(default=0)
【讨论】:
以上是关于在 Django 1.9.2 数据库 sqlite3 中插入列表的主要内容,如果未能解决你的问题,请参考以下文章
Django:使用 sqlite3 作为数据库在 Heroku 上部署应用程序
在 Django 中将 SQLite3 数据库迁移到 MySQL
在开发过程中使用 Django、South 和 Sqlite [关闭]