我有这些数据:
Firefox 3.6
共有3个项目
我以这种方式存储它:
class MyModel(models.Model):
browser_name = models.CharField(...)
browser_max_version = models.IntegerField(...)
browser_min_version = models.IntegerField(...)
或替代
class Browser(models.Model):
name = models.CharField(...)
max_version = models.IntegerField(...)
min_version = models.IntegerField(...)
class MyModel(models.Model):
browser = models.ForeignKey(Browser)
是否有任何聪明的方法将值存储在1个字段中并使其可以同时解析?
我知道这可能听起来很奇怪,但我想知道是否有任何替代方案可以构建100万个模型来代表数据。
有什么想法吗? :)
答案 0 :(得分:3)
你可以使它可解析,但可能无法索引。例如,您可以将这些值连接在一起,用分号(或其他字符)分隔,然后简单地拆分字符串以获取值。 “Firefox 3.6”将成为“Firefox; 3; 6”。虽然这有点容易解析,但它并没有提供比原始格式更多的优势。
这种方法的一个重要警告是该列不能以非常精细的方式进行索引。例如,您无法要求所有版本的Firefox。 PostgreSQL允许一些非常高级的索引,我相信这将允许您创建所需的索引,但我不知道您可以通过Django的ORM访问索引。
答案 1 :(得分:0)
第二个例子中MyModel
的目的是什么?您只需要一张表Browser
即可。为什么你需要'数百万'模型?或者你在谈论表中的行?
class Browser(models.Model):
name = models.CharField(...)
max_version = models.IntegerField(...)
min_version = models.IntegerField(...)
很好