【问题标题】:How to save an array of text in PostgreSQL using Django model.?如何使用 Django 模型在 PostgreSQL 中保存文本数组。?
【发布时间】:2019-12-24 03:11:47
【问题描述】:

我正在尝试为酒店系统保存一个包含类别类型的文本数组,它看起来像这样 ['category-1', category-2', category-3, category-4] 。我在我的 models.py 中使用category_type = ArrayField(models.CharField(max_length=200),null=True)

我得到的错误是

格式错误的数组字面量:"" LINE 1: ..., '{category-1, category-2}'::varchar(200)[], ''::varcha... ^ DETAIL: 数组值必须以“{”或维度信息开头。

即使处理了从['category-1', category-2', category-3, category-4]{category-1, category-2, category-3, category-4} 的python 列表,错误仍然存​​在。 我浏览了 postgresql 文档,发现帮助非常有限, https://pganalyze.com/docs/log-insights/app-errors/U114 这与我面临的问题类似。

有人可以告诉我我做错了什么吗?任何帮助将不胜感激。

编辑: 以下是我的 View.py

hotel_category=categoryTable(category_type=categorytype)
hotel_category.save()

我在 Views.py 中使用categorytype=request.POST.getlist('category-type') 在用户提交表单后从 POST 请求中获取它。这将返回一个我在上面提到的 Python 列表,我已经操纵了这个列表来匹配 PostgreSQL ArrayField 和 '{','}' 但我仍然有这个错误。如果您还有什么想让我补充的,请告诉我。 :)

【问题讨论】:

  • 您能否包含将值分配给category_type 并调用save() 方法的实际代码?
  • @FlipperPA 我已经编辑了我的问题并在最后添加了更多详细信息:)
  • 你使用的是什么版本的 django?
  • @mattjegan Django 版本 2.2.2
  • 你们看过了吗?

标签: django postgresql django-models django-postgresql


【解决方案1】:

对于将来遇到此问题的任何人,这是对我的问题的更新/回答。在努力从不同资源中寻求帮助后,我决定使用 JSON 字符串来存储我的 python 列表。

我正在使用: categorytype = json.dumps(request.POST.getlist('category-type')) 编码并使用JSONDecoder() 从数据库中获取和解码。我不知道这将如何影响我的进一步发展,但现在这似乎是一个不错的方法,因为我个人认为 ArrayFields 在 Django 中没有得到很好的支持和记录。

随着我进一步了解这种方法如何影响我的发展,我会不断更新这篇文章。

祝你有美好的一天。

【讨论】:

    猜你喜欢
    • 2020-11-25
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2023-03-23
    • 2021-07-10
    相关资源
    最近更新 更多