我想在我的网站上添加一个布局模型(一般设置文件),我希望它可以在管理界面中进行配置。
class Layout(...Model):
primary_header
logo_image
...
这个结构不应保存在表格中。
我想知道是否有内置功能可以帮助我做到这一点。
由于
我的用例是网站的可配置布局。 Wordpress风格。我想将这些数据存储在一个具体的类中,而不必自己实现文件/ xml序列化。
答案 0 :(得分:1)
抽象模型怎么样?它不会保存在数据库中,而是要进行子类化,但您可以创建它的实例并使用其属性。我假设您需要某种临时数据结构来传递,以满足模型实例的要求。
class Layout(models.Model):
class Meta:
abstract = True
如果由于某种原因需要实际的具体模型,并且可以为它们创建表格,那么技术上也可以重新实现save()方法并使其成为无操作。
我真的不明白你将在何处以及如何使用它,但这确实是一个无法拯救的模式。
就个人而言,我实际上在使用mongodb和nonrel django fork的项目中使用了不打算保存的模型。我创建的模型纯粹是作为嵌套的子文档嵌入到其他模型中,我从不希望它们被提交到单独的集合中。
<强>更新强>
这是另一个建议,可能会使你的目标更容易。为什么不使用普通的django模型,像普通的那样将它保存到数据库中,并创建一个简单的导入/导出函数,将其保存为XML或从XML读入实例。这样您就可以获得100%正常的管理功能,您仍然可以在数据库中查询值,而XML部分只是一个简单的附加组件。您还可以使用此功能来对首选项进行版本控制,并将某个首选项标记为有效。