Я ищу пример файла Django models.py, реализующего следующий вариант использования:
- Можно создать страницу со списком предметов (Коллекция)
- Когда коллекция будет переупорядочена | добавлен в | удаляется и сохраняется, номер версии Коллекции увеличивается на 1 (Версия)
- Пользователь может вернуться к предыдущей версии этой Коллекции, сравнить любые две версии, а также создать новые Коллекции, которые также должны иметь версии
Я в основном пытаюсь разобраться в отношениях между таблицами (нужно ли мне многие-ко-многим в 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