首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用django treebeard MP_Node树的对象的多个版本(修订)

使用django treebeard MP_Node树的对象的多个版本(修订)
EN

Stack Overflow用户
提问于 2011-02-02 12:31:36
回答 1查看 588关注 0票数 1

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

我正在尝试实现(恢复)对象(后)编辑,允许查看已编辑对象的所有先前修订。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-13 14:39:02

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

代码语言:javascript
复制
@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)

这也许可以做得更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4870802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档