【问题标题】:Django: Tuple/Fixed size list of model fieldsDjango:模型字段的元组/固定大小列表
【发布时间】:2014-12-26 12:39:51
【问题描述】:

我正在寻找一种优雅的方式将元组/列表存储在 django 模型中。

我的模型现在看起来像这样:

class MyClass(models.Model):

    val_0 = models.SmallIntegerField(default=0)
    val_1 = models.SmallIntegerField(default=0)
    val_2 = models.SmallIntegerField(default=0)
    val_3 = models.SmallIntegerField(default=0)
    val_4 = models.SmallIntegerField(default=0)
    val_5 = models.SmallIntegerField(default=0)
    val_6 = models.SmallIntegerField(default=0)
    val_7 = models.SmallIntegerField(default=0)
    val_8 = models.SmallIntegerField(default=0)
    val_9 = models.SmallIntegerField(default=0)

有没有更方便的方法来创建固定大小的模型字段列表?

最好通过 my_obj.val[3] 访问字段的值

【问题讨论】:

  • 为什么不使用关系?
  • @Serafeim 你能详细说明一下吗?
  • 我只是想创建一个 Value 模型,其中包含 MyClass 模型的外键和 val SmallIntegerField!
  • 那么我仍然必须单独处理每个值并且不能迭代。还是我错了?
  • 你绝对可以迭代!如果 obj 是 MyClass 的一个实例,您可以使用 obj.value_set.all() 来获取带有值的查询集(可迭代)。

标签: django models django-1.7


【解决方案1】:

使用 PickledField:
设置

pip install django-picklefield

型号

from picklefield.fields import PickledObjectField
class MyClass(models.Model):
    val = PickledObjectField(default=(0,)*10)

用法

obj = MyClass()
obj.val[0] = 1
obj.val[5] = 4
obj.save()
val = obj.val[0]

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 2011-08-16
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多