Как сделать IntegerField / CharField автоматически увеличивающим поле в Django как 1000001, 1000002 - PullRequest
0 голосов
/ 17 октября 2018

У меня есть поле "CharField" в модели, когда пользователь создает проект, как сделать IntegerField / CharField стандартным полем с автоинкрементом в Django как 1000001, 1000002?или year + 00001, 00002, 0003 и т. д. У меня не может быть более одного автополя, а в поле уже много данных.

1 Ответ

0 голосов
/ 17 октября 2018

Решение - сделать ваше поле автоматическим.Если вы сделаете это автоматически, тогда django не добавит первичный ключ, который вызывает ошибку

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

field = models.AutoField(primary_key=True) # or False

. Чтобы начать отсчет с 1000001, лучше всего изменить файл миграции.Это зависит от базы данных, которую вы используете.Если вы используете Postgres, то это выглядит так.Отредактируйте операции миграции или запустите командную строку базы данных SQL:

operations = [
    migrations.CreateModel(...),
    # mysql specific
    migrations.RunSQL('alter table tablename auto_increment=1000001'),
]

Изменение команды alter зависит от используемой базы данных.

Если вы хотитепользовательский AutoField, то вы можете создать поле char и сделать редактируемые false.Затем укажите значение вручную.См .: https://techstream.org/Web-Development/Custom-Auto-Increment-Field-Django

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