1

我正在使用物化路径树(由 django-treebeard 提供)来创建树结构(https://bitbucket.org/hoverhell/xmppforum/src/27207da4a061/snapboard/models.py#cl-363)。

我正在尝试实现(恢复)对象(发布)编辑,允许查看编辑对象的所有先前版本。

问题是,将所有旧版本存储在哪里会更好?

到目前为止,我有两个想法 - 1. 将它们存储在 Post 模式树中的某个特殊位置,或者 2. 为旧版本实现一个附加模型,可以(以某种方式)给定一个 MP_Node Post 对象来存储(保留它以前的也有修订)。但是这两个想法看起来都不是很好。另一个未完成的想法是将树和数据结构分开(引用树中的数据)。但我强烈怀疑这也会有很大的问题。

4

1 回答 1

1

毕竟,我已经使用模型子类化(这意味着几乎重复的表结构)、基本抽象模型(包含主要数据)、MP_Tree 子类模型(具有树结构中的最新版本)以及“previous”作为链接来实现它用旧版本建模,它有“以前”指向自我。此外,我使用此函数将对象从树模型“移动”到基础模型中:

@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)

这可能会做得更好。

于 2011-02-13T06:39:01.610 回答