Пример модели данных Django для версионной коллекции элементов - PullRequest
1 голос
/ 03 октября 2011

Я ищу пример файла Django models.py, реализующего следующий вариант использования:

  1. Можно создать страницу со списком предметов (Коллекция)
  2. Когда коллекция будет переупорядочена | добавлен в | удаляется и сохраняется, номер версии Коллекции увеличивается на 1 (Версия)
  3. Пользователь может вернуться к предыдущей версии этой Коллекции, сравнить любые две версии, а также создать новые Коллекции, которые также должны иметь версии

Я в основном пытаюсь разобраться в отношениях между таблицами (нужно ли мне многие-ко-многим в 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 Ответ

1 голос
/ 03 октября 2011

Проверьте: http://stdbrouw.github.com/django-revisions/. Это одно из немногих приложений для управления версиями моделей, которое даже несколько активно разрабатывается. Он также имеет довольно простой API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...