У меня есть только один первичный ключ в моей модели Django, но он показывает ошибку как множественный первичный ключ - PullRequest
0 голосов
/ 18 января 2020

Моя модель

class authenticate(models.Model):
    name=models.CharField(max_length=50)
    uid=models.CharField(max_length=39,editable=False)
    image=models.CharField(max_length=250)
    email=models.CharField(max_length=100,primary_key=True)
    mobile=models.CharField(max_length=12)
    dob=models.CharField(max_length=12)
    regno=models.CharField(max_length=10,editable=False)
    created=models.CharField(max_length=10,editable=False)
    last_login=models.CharField(max_length=10)
    department=models.CharField(max_length=5)
    admin=models.BooleanField(default=False)

Произошла ошибка при попытке перенести мою модель в репозиторий Heroku:

psycopg2.errors.InvalidTableDefinition: multiple primary keys for table "Auth_authenticate" are not allowed


The above exception was the direct cause of the following exception:

--
--
--
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: multiple primary keys for table "Auth_authenticate" are not allowed

При использовании sqlite DB приведенная выше модель работает отлично.

1 Ответ

0 голосов
/ 18 января 2020

По умолчанию Django дает каждой модели следующее поле:

id = models.AutoField(primary_key=True)

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

причина, по которой он показывает несколько первичных ключей, возможно, вы добавили несколько первичных ключей и их exsits на файл миграции.

Решение 1. удалите таблицы (или схемы) и файлы миграции, а затем повторите миграцию.

Решение 2. откройте файл миграции, найдите таблицу с несколькими первичными ключами затем удалите один и мигрируйте

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