这似乎是一个显而易见的问题,我绝对肯定以前会被问过,但不幸的是'set'对搜索来说不是一个很好的关键词。
我正在尝试定义一个模型,该模型使用其中一个成员的'set'数据类型 - 想想当天的几小时和一周中的几天。可以放入一组非常有限的数据,但您可以选择任何一个或所有可能的值。一周中的任何一天,周末或两者之间的任何东西都可能被允许。 (编辑:从技术上讲,我可以通过多对多关系来管理这个,然后添加一周中的日期和一天中的小时课程,但这似乎相当荒谬,因为他们已经如此严格修复。让客户增加时间对于系统来说,一周中的一天/几天是愚蠢的,实际上需要为相关API的消费者修复它们以正确解析它们。)
但我无法弄清楚如何在Django中重现MySQL的'set'数据类型。
答案 0 :(得分:1)
我从错误的方向接近问题,搜索明智。而不是搜索'set'数据类型(这很简单,因为'set'也用于'将变量设置为foo'),我需要查找多个选择选项。
从那里开始,有很多引用都指向我这个代码片段,这显然是唯一的选择:
答案 1 :(得分:1)
这个模块实现了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