模型和历史模型(相同字段),将数据从一个复制到另一个

时间:2018-10-27 21:28:38

标签: django django-models

我有两个模型,AHistoryA

class A(models.Model):
    title = ....
    slug = ....
    done = ....
    date_done = ....

class HistoryA(models.Model):
    parent = ForeignKey(A)
    title = ....
    slug = ....
    done = ....
    date_done = ....

用户创建完A实例后,请尝试对其进行编辑;创建了HistoryA的新实例,并保存了所有旧数据。但是,如果该用户决定放弃更改,则HistoryA中的旧数据必须移回A

如何将所有值从HistoryA复制到A,而不必一一键入所有字段,例如:

# Just an example
A_instance.attributes = HistotyA_instance.attributes
A_instance.save()
  

基本上,这只是为模型创建历史记录的一种方法。

1 个答案:

答案 0 :(得分:2)

您可以使用__dict__方法访问模型的数据(或任何对象数据)。为了存储模型的历史记录,而不是按照您提到的方式进行存储,最好使用django-simple-history之类的第三方库。例如,您可以像这样使用它:

from simple_history.models import HistoricalRecords


class A(models.Model):
    title = ....
    slug = ....
    done = ....
    date_done = ....
    history = HistoricalRecords()

您也可以查看many other libraries