Python 修订控制模型的好方法?-德扬戈
以下是我的尝试: 示例#1 示例2Python 修订控制模型的好方法?-德扬戈,python,sql,django,version-control,django-models,Python,Sql,Django,Version Control,Django Models,以下是我的尝试: 示例#1 示例2 我觉得两者都有点不确定,尤其是内容类型,我认为这应该是一个有利的选择 对于content_type one,模型中没有关于不同类型的修订控制字段的知识,如果我想要不同类型的字段呢 因为第一个一对多并不符合逻辑,因为它是一对多关系 有什么建议或想法吗?:)我想你忘了标题中的字段。=)我想我会使用一种保持原始模型不变的方法。首先是: class DjangoPony(models.Model): name = models.TextField()
我觉得两者都有点不确定,尤其是内容类型,我认为这应该是一个有利的选择
- 对于content_type one,模型中没有关于不同类型的修订控制字段的知识,如果我想要不同类型的字段呢
- 因为第一个一对多并不符合逻辑,因为它是一对多关系
有什么建议或想法吗?:)我想你忘了标题中的字段。=)我想我会使用一种保持原始模型不变的方法。首先是:
class DjangoPony(models.Model):
name = models.TextField()
color = models.TextField()
class RevisionControlledValue(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User)
value = models.TextField()
field = models.CharField(max_length=20)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
这假设您将只对文本字段使用它。为了让它看起来更漂亮,你可以创建一个新的字段,比如说ReversionTextField
,当模型保存时,它会自动创建reversion对象。有一个应用程序。如果您真的只想在一个字段上拥有反转控制,请将其拆分到自己的表中,并建立一对一的关系。@Jason
您不需要创建新模型。。。从恢复文档中:
保存字段的子集
如果只希望将字段的子集保存到修订,可以为register方法指定字段参数
reversion.register(YourModel, fields=["pk", "foo", "bar"])
回归已经过很好的测试,低级api可以让你做我想做的事情。我想你已经调查过了?@dgel:我只想修改单个字段,而不是整个模型。此外,我还想阅读其他人的意见:)我想看看其他人采取的方法:
class DjangoPony(models.Model):
name = models.TextField()
color = models.TextField()
class RevisionControlledValue(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User)
value = models.TextField()
field = models.CharField(max_length=20)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
reversion.register(YourModel, fields=["pk", "foo", "bar"])