【发布时间】:2014-08-24 18:02:28
【问题描述】:
我想将整数列表作为字段存储在我的模型中。由于在 Django 中默认没有为此提供字段,因此我使用名为 x 的 CommaSeparatedIntegerField 来完成此操作。在我看来,然后我会使用这个字符串并从中创建一个整数列表。当使用参数n 创建模型实例时,我希望将x 设置为长度n,并将每个元素设置为零。
这是模型:
class Foo(models.Model):
id = models.IntegerField(default = 0)
x = models.CommaSeparatedIntegerField(max_length = 10)
@classmethod
def create(cls, _id, n):
user = cls(id = _id)
user.class_num_shown = '0,' * n
然后我创建一个实例:
f = Foo.create(1, 4)
f.save()
并从数据库中加载它并将字符串转换为列表:
f = Foo.objects.get(id = 1)
x_string = f.x
x_list = x_string.split(',')
print x_list
但这会输出[u'0,0,0,0,'],而不是我想要的,即[0,0,0,0]。我怎样才能达到我想要的输出?
【问题讨论】:
-
不知道为什么会发生这种情况,但如果我猜的话,你正在做的是
.split()而不是.split(',')。或者,ast.literal_eval('0, 0, 0, 0')会给你想要的结果。