【发布时间】:2016-11-16 08:55:31
【问题描述】:
我目前正在使用 Django 和 PostgreSQL。我使用django-extensions 运行自定义脚本,将数据插入数据库。我有一个模型如下:
class Route(models.Model):
"""
Bus routes of İzmir.
"""
code = models.PositiveSmallIntegerField(
unique=True,
primary_key=True,
verbose_name="Code"
)
stops = models.ManyToManyField(
Stop,
null=True,
blank=True,
related_name="routes",
verbose_name="Stops"
)
terminals = ArrayField(
models.CharField(
null=False,
blank=False,
max_length=32,
),
size=2,
default=[],
verbose_name="Terminals"
)
departure_times = ArrayField(
ArrayField(
models.TimeField(
null=False,
blank=False
),
null=True, # This was added later to maybe solve the problem.
default=[]
),
default=[],
size=6,
verbose_name="Departure Times"
)
class Meta:
verbose_name = "Route"
verbose_name_plural = "Routes"
ordering = ["code"]
如您所见,我在departure_times 中嵌入了另一个ArrayField。我的数据具有不规则的形状,如 Django documentation 中提到的 note。因此,自然会引发如下错误:
django.db.utils.DataError:多维数组必须有匹配维度的数组表达式
正如文档中提到的“基础字段应该可以为空”,我将null = True 添加到我嵌入的ArrayField 中。但是,我不理解文档注释中的以下声明:
用 None 填充的值
我头上的问题是
1) 我是否会处理这些数据,修改不规则列表的长度如下?
[a, b, c, None, None]
[a, b, None, None, None]
[a, b, c, d, e]
2) 有没有内置的方法来克服DataError?
如果您认为查看脚本可以帮助您解决问题,here it is。
环境
- python 3.5.1
- django 1.9.7
- psycopg2 2.6.2
- postgresql 9.5
【问题讨论】:
标签: python arrays django postgresql python-3.x