2011-10-03 70 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