Django:存储有序,任意的引用

时间:2010-03-17 21:44:57

标签: django

我是Django的新手,我不确定我想要的是什么:

我希望每个AppUser(扩展用户模型)能够引用许多项目。

也就是说,给定一个AppUser,我希望能够以AppUser选择订购它们的方式提取其项目列表。通常,这些项实际上是对数据库中其他内容的引用,这使我得到了一个可能的解决方案:

将给定对象的密钥存储在AppUser中的CommaSeparatedIntegerField中。这样,用户可以在其项目字段中存储{7,3,232,42,1},并且将存储引用及其首选顺序。然而,这感觉很糟糕。由于大多数数据库后端在内部将CommaSeparatedIntegerField存储为VARCHAR,因此用户不仅受到许多对象的限制,还受其所选项目中的位数限制。例如。 “如果您选择itemID <10的项目,则可以存储10个项目,但如果10&lt; itemID&lt; 100”,则只能存储5个项目。

(编辑:如果这实际上不是一个丑陋的黑客,那么使用这个解决方案会有什么性能损失?)

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

使用ManyToManyexplicit through table,其中包含一个给出排序字段。