如何在Django模型中添加“set”数据类型?

时间:2013-08-29 18:11:40

标签: python django

这似乎是一个显而易见的问题,我绝对肯定以前会被问过,但不幸的是'set'对搜索来说不是一个很好的关键词。

我正在尝试定义一个模型,该模型使用其中一个成员的'set'数据类型 - 想想当天的几小时和一周中的几天。可以放入一组非常有限的数据,但您可以选择任何一个或所有可能的值。一周中的任何一天,周末或两者之间的任何东西都可能被允许。 (编辑:从技术上讲,我可以通过多对多关系来管理这个,然后添加一周中的日期和一天中的小时课程,但这似乎相当荒谬,因为他们已经如此严格修复。让客户增加时间对于系统来说,一周中的一天/几天是愚蠢的,实际上需要为相关API的消费者修复它们以正确解析它们。)

但我无法弄清楚如何在Django中重现MySQL的'set'数据类型。

2 个答案:

答案 0 :(得分:1)

我从错误的方向接近问题,搜索明智。而不是搜索'set'数据类型(这很简单,因为'set'也用于'将变量设置为foo'),我需要查找多个选择选项。

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

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

答案 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