我需要在Django模型中存储一些数据。这些数据并不等于模型的所有实例。
最初,我考虑过将模型子类化,但是我试图保持应用程序的灵活性。如果使用子类,则每次需要新的对象时都需要创建一个整个类,这是不好的。我还将最终得到很多子类,仅用于存储一对额外的字段。
我真的觉得词典是最好的方法,但是Django文档中没有关于在Django模型中存储词典的内容(或者我找不到它)。
有什么线索吗?
如果你要查找的是像字典一样的任意数据,则可以使用两级设置,其中一个模型是容器,另一个模型是键值对。你将创建容器的实例,创建每个键值实例,并将一组键值实例与容器实例相关联。就像是:
class Dicty(models.Model): name = models.CharField(max_length=50) class KeyVal(models.Model): container = models.ForeignKey(Dicty, db_index=True) key = models.CharField(max_length=240, db_index=True) value = models.CharField(max_length=240, db_index=True)
它虽然不漂亮,但是可以让你使用数据库访问/搜索字典的内部,而不能使用pickle / serialize解决方案。