【发布时间】:2011-07-22 19:55:27
【问题描述】:
这是我的尝试:
示例 #1
class RevisionControlledValue(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User)
value = models.TextField()
class Meta:
ordering = ('-created', )
class DjangoPony(models.Model):
names = models.ManyToManyField(RevisionControlledValue, \
related_name="fromname_djangopony_set")
colors = models.ManyToManyField(RevisionControlledValue, \
related_name="fromcolor_djangopony_set")
@property
def name(self):
return self.names.latest('created')
示例 #2
class RevisionControlledValue(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
value = models.TextField()
class Meta:
ordering = ('-created', )
class DjangoPony(models.Model):
@property
def name(self):
return self.revisioncontrolledvalue.latest('created')
我觉得两者都有点不确定,尤其是 content_type ,我认为这应该是有利的选择。
使用 content_type 之一,模型中不知道不同类型的修订控制字段,如果我想要不同类型的字段怎么办?
对于第一个,多对多并不真正符合逻辑,因为它是一对多关系。
有什么建议或想法吗? :)
【问题讨论】:
-
我想你已经调查过django-reversion?
-
@dgel:我只希望修改单个字段,而不是整个模型。我也想看看其他人的意见:)
-
我会看看其他人采取的方法:djangopackages.com/grids/g/versioning
标签: python sql django version-control django-models