gpt4 book ai didi

python - django treebeard MP_Node Tree 对象的多个版本(修订版)

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:57 29 4
gpt4 key购买 nike

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

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

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

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

最佳答案

毕竟,我已经通过模型子类化(这意味着几乎重复的表结构)、基本抽象模型(包含主要数据)、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)

这可能可以做得更好。

关于python - django treebeard MP_Node Tree 对象的多个版本(修订版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870802/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com