【问题标题】:How to fill and access a Django ArrayField?如何填充和访问 Django ArrayField?
【发布时间】:2019-07-27 20:52:17
【问题描述】:

为了解决我的(有点具体的)问题,我发现我必须使用 Django ArrayField: https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/fields/#arrayfield

我已在我的models.py 文件中将其定义为

Bla = ArrayField(
        models.IntegerField(),
        size=4
        null=True
        )

但是我实际上如何将信息放入其中?理想情况下,既是一个完整的 python 列表,也可以放在一个地方。

一旦它在那里,我怎样才能检索它?在 python 端,以及在.html 文件中?

PS:我不认为问题的整个背景是相关的,所以我暂时省略了,但如果有人感兴趣,我当然会提供所有必要的细节。

【问题讨论】:

    标签: python arrays django postgresql


    【解决方案1】:

    你只需分配一个整数列表。

    class M(models.Model):
        bla = ArrayField(models.IntegerField(), size=4, null=True)
    
    m = M.objects.create(bla=[1, 3, 3, 7])
    
    # (or, equivalently,)
    
    m = M()
    m.bla = [1, 3, 3, 7]
    m.save()
    
    # (or, equivalently,)
    
    m = M(bla=[1, 3, 3, 7])
    m.save()
    

    阅读m.bla,你会得到一个整数列表,你可以像任何其他列表一样在 Python 或 Django 模板中访问它。

    另见the documentation on the various extra lookups for ArrayFields

    【讨论】:

    • 哇,谢谢!我收到一条新的错误消息,所以这就是进步! “无法通过组实例访问管理器”而且(真的没有冒犯的意思:D)您真的只是在答案中输入了与我在问题中输入的链接相同的链接吗? :D 但我保证会再看一遍,也许我现在会明白了。我真的不知道,我必须经历整个 .objects.create() 麻烦,因为对于我的所有其他领域,我不必这样做。我想那是一些内置的魔法^^
    • 不,你不必通过.objects.create——这只是m = M(bla=...); m.save();的简写。它不是完全相同的链接,这是关于这些查找的下一部分。但是让我稍微修改一下我的答案。
    • 文档中没有说明这有点奇怪。
    猜你喜欢
    • 2023-04-09
    • 2014-09-14
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2016-10-17
    • 2016-08-13
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多