我使用物化路径树(由django-treebeard提供)来创建一个树结构( https://bitbucket.org/hoverhell/xmppforum/src/27207da4a061/snapboard/models.py#cl-363 )。
我正在尝试实现(恢复)对象(后)编辑,允许查看已编辑对象的所有先前修订。
问题是,在哪里存储所有的旧版本会更好?
到目前为止,我有两个想法- 1.将它们存储在Post模式树中的某个特殊位置,或者2.为旧的修订实现一个额外的模型,该模型可以(以某种方式)给出一个要存储的MP_Node帖子对象(也保留它以前的修订)。但这两个想法看起来都不太好。另一个未完成的想法是将树和数据结构分开(引用树中的数据)。但我强烈怀疑这也会有很大的问题。
发布于 2011-02-13 14:39:02
毕竟,我已经实现了模型子类化(这意味着几乎重复的表结构),使用基本抽象模型(包含主要数据),MP_Tree子类模型(具有树结构中的最新版本)与具有旧版本的模型的链接,而旧版本的模型具有指向自身的“先前”。此外,我使用此函数将对象从树模型“移动”到基本模型中:
@classmethod
def make_from_post(cls, post):
""" Create an object from another object, possibly of a slightly
different class (like tree Post). """
data = {}
for field in cls._meta.fields:
if field.primary_key:
continue
# Assuming that all default fields for cls are None and thus
# skipping 'None's from attribute values.
attrdata = getattr(post, field.name, None)
if attrdata is not None:
data[field.name] = attrdata
return cls(**data)这也许可以做得更好。
https://stackoverflow.com/questions/4870802
复制相似问题