如何在Django中使用数组

2 投票
4 回答
8122 浏览
提问于 2025-04-15 18:52

我有一个数据库表格,其中有一个整数数组。但是我该如何在我的模型中添加这个字段呢?我试着用 IntegerField 来写,但在保存的时候出现了错误。

int() argument must be a string or a number, not 'list

我该如何把这个字段添加到我的模型里呢?因为我在 views.py 中使用了这个字段,所以我需要把它加到我的模型里。有啥建议吗?

4 个回答

1

我建议你了解一下数据库规范化。特别是,你的数据库连第一种规范形式都没有达到,而第一种规范形式是最基本也是最重要的,它的意思是规范化的数据不能有重复的组。因此,Django的对象关系映射工具在处理你的数据时会遇到很大的困难。

Django只支持单一且不重复的数据类型,这在某种程度上强制要求数据符合第一种规范形式。你可以尝试自己写SQL来管理这个特定的字段,或者在网上找一些相关的代码,但更好的办法可能是把这个字段重新设计成一个多对一的关系,放到自己的模型里。你可以在这里找到Django的相关文档:这里

1

Clueless的回答可能是你能找到的最佳答案,但如果你仍然想把一组数字存储在一个字段里,你可以这样做——要么手动处理,比如把它们打包存储到文本字段里,要么写一个自定义的模型字段,让它自动帮你完成这些操作。

这是相关文档: http://docs.djangoproject.com/en/1.1/howto/custom-model-fields/

7

你可能会对使用一个叫做 CommaSeparatedIntegerField 的东西感兴趣。

如果你有这样一个整数列表:

my_ints = [1,2,3,4,5]

还有一个这样的模型:

class MyModel(models.Model):
    values = CommaSeparatedIntegerField(max_length = 200)

那么你可以像这样把 my_ints 保存到 MyModel 中:

m = MyModel(values = ','.join(my_ints))
m.save()

撰写回答