2011-10-03 38 views
1

我在寻找实现以下用例的Django models.py文件的示例数据模型例如:Django的物品的版本集合

  1. 与可创建的项目列表的页面(一Collection)
  2. 当Collection被重新排序|被添加到|被删除并保存,Collection的版本号增加1(一个版本)
  3. 用户可以返回到此Collection的先前版本,比较任何两个版本,并创建新的Collections,这也需要将被版本化

我主要是试图让我的头周围的表关系(我需要多对多的项目,而不是ForeignKey),以及如何自动增加版本号。

下面是一些代码入手:

class Collection(models.Model): 
    """A collection of items""" 
    label = models.CharField(blank=True, max_length=50) 
    slug = models.SlugField() 

    class Meta: 
     verbose_name_plural = "Collections" 

    def __unicode__(self): 
     return self.label 

class Item(models.Model): 
    """An item""" 

    STATUS_CHOICES = (
     (1, "Neutral"), 
     (2, "Flagged Up"), 
     (3, "Flagged Down"), 
    ) 

    title = models.CharField(max_length=100) 
    slug = models.SlugField() 
    collection = models.ForeignKey(Collection) 
    owner = models.ForeignKey(User) 
    status = models.IntegerField(choices=STATUS_CHOICES, default=1) 
    created = models.DateTimeField(default=datetime.datetime.now) 
    modified = models.DateTimeField(default=datetime.datetime.now) 

    class Meta: 
     ordering = ['modified'] 
     verbose_name_plural = "Items" 

class Version(models.Model): 
    """The version of a collection""" 
    collection = models.ForeignKey(Collection) 
    version_number = "??? how to auto increment, or do you I just use the primary key/auto field ???" 

    class Meta: 
     verbose_name_plural = "Versions" 

    def __unicode__(self): 
     return self.label 

回答

1

退房:http://stdbrouw.github.com/django-revisions/。它是模型版本控制的几个应用程序之一,甚至有点积极开发。它也有一个相当简单的API。

+0

django-revisions看起来不错,尽管文档相当稀少。我会试着让代码工作,如果成功返回接受这个答案,以及代码示例。干杯! – sgriffee