Поле автоинкремента Django BigInteger как первичный ключ?

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

По умолчанию Django создает INT (11) id поле для обработки первичных ключей моделей. Я обеспокоен этим пролетевшим очень быстро (т.е. ~2.4b устройства, посетив страницу без предшествующего настроенного cookie). Как я могу изменить его, чтобы быть представленным как BIGINT в MySQL и долго () в Django самом?

Я нашел, что мог сделать следующий (http://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield):

class MyProfile(models.Model):
    id = BigIntegerField(primary_key=True)

Но есть ли способ сделать это автоинкрементом, как обычный id поля? Кроме того, я могу сделать это неподписанным так, чтобы я заставил больше пространства заполнять?

Спасибо!

25
задан letoosh 20 April 2010 в 06:19
поделиться

2 ответа

Вы могли потом изменить таблицу. Это может быть лучшим решением.

7
ответ дан 28 November 2019 в 20:38
поделиться

У меня тоже была такая же проблема. Похоже, что в django нет поддержки автоматических полей BigInteger.

Я пытался создать какое-то настраиваемое поле BigIntegerAutoField, но столкнулся с проблемой с системой миграции на юг (юг не мог создать последовательность для моего поля).

Попробовав несколько разных подходов, я решил последовать совету Мэтью и изменить таблицу (например, ALTER TABLE table_name ALTER COLUMN id TYPE bigint; в postgre)

Было бы здорово получить решение поддерживается django (как встроенный в BigIntegerAutoField) и юг.

2
ответ дан 28 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: