用于版本化项目集合的Django数据模型示例

时间:2011-10-03 14:23:56

标签: django

我正在寻找实现以下用例的Django models.py文件的示例:

  1. 可以创建包含项目列表的页面(集合)
  2. 当收集重新订购时|添加到|从中删除并保存,Collection的版本号增加1(版本)
  3. 用户可以返回此Collection的先前版本,比较任何两个版本,还可以创建新的集合,这些集合也需要进行版本控制
  4. 我主要试图了解表关系(我需要在Items而不是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 个答案:

答案 0 :(得分:1)

结帐:http://stdbrouw.github.com/django-revisions/。它是为数不多的模型版本应用程序之一,甚至有些积极开发。它也有一个相当简单的API。