【问题标题】:List Field in Django for responsing through views.pyDjango中的列表字段以通过views.py响应
【发布时间】:2020-11-09 08:02:20
【问题描述】:

在我的 django 项目中,我有一个返回列表列表的代码,如下所示:

[["2019-01-04", "0:00:00", 0.0], ["2019-01-04", "0:30:00", 0.0]]

我想将此列表存储到我的数据库中,但在 django 模型中似乎没有任何名为 ListField 的内容。我也尝试将列表更改为字符串并保存在 CharField 中,但由于列表中包含引号,django 会将其格式化为类似这样的内容

[[\"2019-01-04\", \"0:00:00\", 0.0], [\"2019-01-04\", \"0:30:00\", 0.0]]

谁能建议一种方法来克服这个问题。谢谢。

【问题讨论】:

标签: python django


【解决方案1】:

我会建议你使用外键。提供文档here。这允许您存储一系列东西,但您不需要安装 Postgres - 这对我来说很痛苦,而且您不能存储对象,只能存储字符串或数字。

# models.py

class TimeObject(models.Model):
    date = models.DateField(...)
    dt = models.DateTimeField(...)
    whatever = models.IntegerField(...)

class AllStuffs(models.Model):
    timeobjs = models.ForeignKey(TimeObject, on_delete=models.CASCADE)

使用 Django 内置的东西,您可以解决您现在遇到的问题,并且可以完全控制您的模型。

【讨论】:

  • 您好 Crimsonpython24,感谢您的回复。我不确定这个是否可以解决我的问题,因为我需要将整个 list of lists 作为单个属性存储在我的数据库中。如果我是对的,您的解决方案可以只在一行中存储一个列表,而不是列表。除此之外,我正在使用 MySQL,这个解决方案是否正确。谢谢。
  • 嗯,是的,因为列表中的每个项目都是一个列表。我建议的上述替代方法是将每个子列表替换为一个对象,例如[<TimeObject1>, <TimeObject2>, ...]。 ForeignKey 和模型应该适用于 Django 提供的所有数据库。
猜你喜欢
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多