1

这似乎是一个非常明显的问题,我绝对可以肯定它以前被问过,但不幸的是,'set' 不是一个很好的搜索关键字。

我正在尝试为其中一个成员定义一个使用“集合”数据类型的模型——想想一天中的几个小时和一周中的几天。可以放入的数据非常有限,但您可以不选择任何值或选择所有可能的值。一周中的任何一天、周末或介于两者之间的任何时间都可能允许某些事情发生。(编辑:从技术上讲,我可以通过多对多关系来管理它,然后添加一周中的天数和一天中的小时数,但这似乎相当荒谬,因为它们非常固定。让客户增加小时数一周中的一天/几天对系统来说是愚蠢的,实际上需要修复它们以便相关 API 的消费者正确解析它们)

但我不知道如何在 Django 中重现 MySQLs 'set' 数据类型。

4

2 回答 2

2

我从错误的方向解决问题,明智地搜索。我需要查找多个选择选项,而不是搜索“set”数据类型(这很可能是因为“set”也用于“将变量设置为 foo”)。

从那里,有很多引用指向我这个代码片段,这显然是唯一的选择:

http://djangosnippets.org/snippets/1200/

于 2013-08-29T18:23:20.263 回答
2

该模块实现了 ArrayField,它与您所追求的非常接近。

https://github.com/niwibe/djorm-ext-pgarray

从文档中:

class Register(models.Model):
    name = models.CharField(max_length=200)
    points = ArrayField(dbtype="int")
    objects = ExpressionManager()

>>> Register.objects.create(points = [1,2,3,4])
<Register: Register object>

以下是 ArrayField 的实现方式:

https://github.com/niwibe/djorm-ext-pgarray/blob/master/djorm_pgarray/fields.py

于 2013-08-29T18:27:50.943 回答