Sql 及时冻结django模型对象,如快照
假设我想跟踪从事项目的员工 2015年项目Sql 及时冻结django模型对象,如快照,sql,django,model,instance,revision,Sql,Django,Model,Instance,Revision,假设我想跟踪从事项目的员工 2015年项目 -雇员A 员工A现在更换了医疗服务提供商, 地址和完成他的学士学位 2018年项目 -雇员A 对于2018项目,员工A的详细信息是最新的。但如果我看 回到project 2015,员工A详细信息现在比项目本身更新。例如,现在看起来员工A在2015项目工作时拥有学士学位,这是不正确的。 我需要的是一个实例,在将员工保存到项目中时,他被冻结在时间/时间胶囊/快照/副本中。同时仍然能够更新员工的“实时”版本 还有其他的模型,我会遇到同样的问题。这真的让我大吃
-雇员A 员工A现在更换了医疗服务提供商, 地址和完成他的学士学位 2018年项目
-雇员A 对于2018项目,员工A的详细信息是最新的。但如果我看 回到project 2015,员工A详细信息现在比项目本身更新。例如,现在看起来员工A在2015项目工作时拥有学士学位,这是不正确的。 我需要的是一个实例,在将员工保存到项目中时,他被冻结在时间/时间胶囊/快照/副本中。同时仍然能够更新员工的“实时”版本
还有其他的模型,我会遇到同样的问题。这真的让我大吃一惊,因为这对数据库思维来说太违反直觉了。是否有正确/正确的方法来处理此问题。可能有Django版本吗?解决方案谢谢大家! django simple history项目非常有用,您可以获取对象的快照。我也遇到了类似的挑战,我们通过执行一个模式来解决它,该模式将很难转化为以下领域:
class EmployeeProfile(Model):
class Meta:
abstract = True
common_field1 = CharField()
common_field2 = CharField()
common_field3 = CharField()
def get_employee_profile_data(self):
return {
'common_field1': self.common_field1,
'common_field2': self.common_field2,
'common_field3': self.common_field3,
}
class Employee(EmployeeProfile):
specific_fields
class ProjectProfile(EmployeeProfile):
class Meta:
unique_together = ('project', 'employee')
project = ForeignKey(Project)
owner = ForeignKey(Employee) # Means that the Employee "owns" this profile
# A factory function
def create_project_profile(employee, project):
return ProjectProfile.objects.create(
project=project,
owner=employee,
**employee.get_employee_profile_data())
我们试着在考虑问题的时候把注意力分开
我认为该模式满足以下条件:
- 项目具有由员工拥有的特定于项目的配置文件
- 员工每个项目只能有一个配置文件
- 可以在不影响“实时数据”的情况下更改项目的特定配置文件
- 可以在不影响任何项目的情况下更改员工档案实时数据
希望它能给你一些想法…看起来你在寻找一种纪念图案