Подтвердить что ты не робот

Есть ли способ автоматически увеличивать поле Django по отношению к внешнему ключу?

В настоящее время я кодирую сайт в Django (потому что вы никогда не сможете узнать слишком много фреймворков!), и мне интересно, есть ли способ автоматически увеличивать объект относительно связанного объекта. Например, скажем, у меня есть модель Entry и модель EntryVersion:

Элемент
- название
- slug

EntryVersion
- вход (внешний ключ)
- version_number
- содержание

Я хочу автоинкремент version_number относительно внешнего ключа записи (чтобы запись могла иметь несколько версий, начиная с одного и перемещая вверх на один). Это не будет истинным автоматическим приращением, хотя, поскольку оно не будет уникальным в базе данных (может быть много версий ввода с номером version_number = 1, а всего лишь один для данной записи).

Я знаю, что я мог бы свернуть собственный администратор и просто обрабатывать его там, но задавался вопросом, есть ли способ, чтобы администратор Django автоматически увеличивал номер версии на каждый раз, когда сохраняется новая версия записи.


Изменить: специальный код, который я использовал (исправлено, чтобы установить только номер версии при первом сохранении)

Ответ Тьягу был прав, но в интересах будущих пользователей StackOverflow с подобными дилеммами, вот конкретный код, который я использовал:

def save(self, force_insert=False, force_update=False):
    # Only modify number if creating for the first time (is default 0)
    if self.version_number == 0:
        # Grab the highest current index (if it exists)
        try:
            recent = EntryVersion.objects.filter(entry__exact=self.entry).order_by('-version_number')[0]
            self.version_number = recent.version_number + 1
        except IndexError:
            self.version_number = 1
    # Call the "real" save() method
    super(EntryVersion, self).save(force_insert, force_update)

Тройка order_by w/index - это то, что я почерпнул из документации Django:

http://docs.djangoproject.com/en/dev/topics/db/queries/#id4

Обратите внимание, что для этого необходимо иметь default=0 в поле version_number.

Там может быть лучший способ, но это, похоже, работает именно так, как мне было нужно; мы надеемся, что другие также посчитают это полезным.

4b9b3361