【问题标题】:Insert an list in Django 1.9.2 database sqlite3在 Django 1.9.2 数据库 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(";"))

标签: django django-models django-database


【解决方案1】:

您需要为ArrayField()定义一个默认类型,在这种情况下,它需要定义为default=list

另外,不能使用strlistint等关键字作为变量名!

您的代码应如下所示:

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)

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 2021-03-03
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多