可以在Django模型中存储数组吗?

Elr*_*meo 16 python arrays django

我想知道是否可以在Django模型中存储数组?

我问这个是因为我需要在一个字段中存储一个int数组(例如[1,2,3]),然后能够搜索一个特定的数组并获得它的匹配或它的可能组合.

我想将这些数组存储为字段中的字符串然后,当我需要搜索某些内容时,将值(通过过滤其他模型获得)与'[',']'和','连接,然后使用对象过滤器生成字符串.问题是我必须生成每个可能的组合,然后逐个过滤,直到我得到一个匹配,我相信这可能是低效的.

所以,我希望你能给我一些我可以尝试的想法.

我不是必须要求代码,任何有关如何实现这一点的想法都会很好.

Tim*_*cht 28

我有两个建议给你:

1)ArrayField如果您使用PostgreSQL作为数据库,请使用.你可以ArrayField 在这里阅读更多信息.

2)将您的数组编码为JSON,并将其存储为纯字符串或使用此处JSONField找到的.

我个人更喜欢1号选项,因为这是更清洁,更好的方式,但取决于您实际用于存储可能无法使用的数据的内容.

  • @KennyWorden 哈哈..升级得很快:D (5认同)

Exp*_*tor 8

是的,您可以像这样使用它:

from django.contrib.postgres.fields import ArrayField
class Board(models.Model):
    pieces = ArrayField(ArrayField(models.IntegerField()))
Run Code Online (Sandbox Code Playgroud)

但是,它只能在将PostgreSQL用于数据库时才可用.

  • @AndrewSwift 这是一个数组数组,即矩形数组。 (2认同)

Chr*_*lan 7

如果你不使用 Postgres,我推荐 Django 的validate_comma_separated_integer_list验证器。

https://docs.djangoproject.com/en/dev/ref/validators/#django.core.validators.validate_comma_separated_integer_list

您使用 is 作为CharField().