Django OneToOneField не создает таблицу - PullRequest
0 голосов
/ 20 июня 2020

Заранее спасибо, это мой файл users / models.py:

from django.db import models
from django.contrib.auth.models import User


class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)

def __str__(self):
    return "{} profile".format(self.user.username)

Затем я запускаю python manage.py makemigrations + python manage.py migrate, вроде все работает отлично, но он не создает таблицу users_profile:

1146, «Таблица 'polls_db.users_profile' не существует») в разделе администратора + то же самое, когда я пытаюсь управлять профилем, бросил оболочку .

Я проверил свою базу данных mariadb, и действительно нет таблицы users_profile.

Я все еще изучаю django, и он отлично работал в предыдущем проекте с базой данных sqlite, есть ли решение?

РЕДАКТИРОВАТЬ: при переключении на базу данных sqlite3 по умолчанию автоматически создается users_profile, хотя на этот раз я столкнулся с другой проблемой с базой данных sqlite3, она не хочет создавать столбец с именем популярность:

Class Question(models.Model):
    id = models.AutoField(
        primary_key=True)
    question_text = models.CharField("Question", max_length=200)
    pub_date = models.DateTimeField(
        "date de publication", default=timezone.now )
    popularity = models.IntegerField("popularité", default=0) 

django .db.utils.OperationalError: таблица polls_question не имеет столбца с именем популярность

РЕДАКТИРОВАТЬ 2: Установлено PostgreSQL и все работает, users_profile создается автоматически, и никаких проблем с другими моделями, как я испытал с sqlite3, не было, это не решение, а просто хотел сообщить вам

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Я заменил базу данных mariadb на sqlite3 по умолчанию, и да, он создал users_profile, это известная ошибка с mysql? Я бы хотел продолжать использовать его

мои БАЗЫ ДАННЫХ settings.py, если бы это могло помочь:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'polls_db',
        'USER': os.environ.get("MYSQL_U"),
        'PASSWORD': os.environ.get("MYSQL_P"),
        'HOST': '',
        'PORT': "",
    }


}
0 голосов
/ 20 июня 2020

Я не вижу ошибок в этом коде. Попробуйте изменить базу данных на SQLite и посмотрите, возникает ли ошибка, возможно, проблема с настройкой базы данных

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