Я не знаю, говорите ли вы об использовании первичного ключа в качестве идентификатора записи, но это не сработает, если вы хотите, чтобы он начинался с 0 для каждой доски. Я бы порекомендовал добавить другое поле для вашей модели Post
и самостоятельно управлять им по методу save
. Пример:
class Post(models.Model):
board = models.ForeignKey(Board)
post_count = models.PositiveIntegerField(default=0)
def save(self, *args, **kwargs):
if not self.id:
self.post_count = self.board.post_set.count()
super(Post, self).save(*args, **kwargs)
Редактировать: Как отмечает Брайан, могут быть проблемы при удалении сообщений. Это приведет к дублированию post_id
с. Вы можете добавить поле deleted
к модели, чтобы "фальсифицировать" удаление сообщений (не показывать, когда deleted
= True), что обеспечило бы точный подсчет post_id
.
Редактировать 2: Вы можете установить post_count
равным максимальному количеству сообщений для этой доски + 1 (или 0, если счет равен 0)