Как добавить авто поля, которые пользователь может редактировать - PullRequest
0 голосов
/ 16 марта 2020

Я создаю модель в этом, мне нужно автоматически сгенерированное поле, отличное от id ....

An AutoField

Sequence #. Автоинкремент # 10,20,30, - для последовательного упорядочения. (Сгенерировано автоматически - но пользователь может редактировать)

Необходимо увеличить на 10, а пользователь может редактировать его .....

Это мое требование

Вот моя модель:

class Abc(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    order = models.AutoField()

Как сгенерировать ее на основе 10 ... Также как пользователь может редактировать ее

1 Ответ

1 голос
/ 16 марта 2020

Django не позволит вам использовать более одной AutoField в модели. Подробнее Документация.

Если вы хотите указать собственный первичный ключ, укажите primary_key=True в одном из ваших полей. Если Django увидит, что вы явно задали Field.primary_key, он не добавит столбец с автоматическим идентификатором c.

Для каждой модели требуется ровно одно поле с primary_key=True (либо явно объявленным, либо автоматически добавлено).

Решение с использованием IntegerField:

class Abc(models.Model):
    def increment_by_ten():
        try:
            inst = Abs.objects.latest('id')
            return inst.order + 10
        except Abs.DoesNotExist:
            return 10

    order = models.IntegerField(unique=True, default=increment_by_ten)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...