Django user_id из django db отсутствует в приложении models.py

Несколько дней назад я начал этот учебник по Django: https://www.youtube.com/watch?v=sm1mokevMWk

В этом видео рассказывается о том, как создать свой первый django-проект, используя некоторые библиотеки из django, а также bootstrap для создания стиля вашего сайта. Он рассказывает о том, как настроить базу данных, веб-сайт и все остальное, что вам нужно для примера сайта со списком дел, а в конце видео он рассказывает о настройке пользователей, а также списков дел для конкретного пользователя. Я попробовал воссоздать этот процесс, и до момента создания списков дел для конкретного пользователя все было очень понятно и легко выполнимо. Однако, когда я попытался реализовать практически последний шаг, я получил следующую ошибку:


Операционная ошибка в /create/ В таблице main_todolist нет столбца с именем user_id Метод запроса: POST URL запроса: http://127.0.0.1:8000/create/. Версия Django: 5.0.1 Тип исключения: OperationalError Значение исключения:
В таблице main_todolist нет столбца с именем user_id Местоположение исключения: C:\Entwicklung\Python\Python312\Lib\site-packages\django\db\backends\sqlite3\base.py, строка 328, in execute Вызвано во время выполнения: main.views.create Исполняемый файл Python: C:\Entwicklung\Python\Python312\python.exe Версия Python: 3.12.0 Python Path:
['C:\Users\brenneckeo\Desktop\Django Projekt\meineSeite', 'C:\Entwicklung\Python\Python312\python312.zip', 'C:\Entwicklung\Python\Python312\DLLs', 'C:\Entwicklung\Python\Python312\Lib', 'C:\Entwicklung\Python\Python312', 'C:\Entwicklung\Python\Python312\Lib\site-packages']. Время сервера: Wed, 28 Feb 2024 14:18:52 +0000


При попытке создать ToDoList появляется ошибка. Когда вы это делаете, вы попадаете на страницу "/view", где перечисляются элементы (это модель базы данных, относящаяся к модели "ToDoList") созданного вами списка TodoList, и вы можете добавлять новые и проверять любой из элементов. Так и должно работать, но из кода ошибки я понял, что в списке не было атрибута "user_id", который должен ссылаться на пользователя, чтобы вы могли просматривать различные списки дел, которые вы создали. В коде файла "models.py", который я создал, парень из видео использовал следующие пакеты:

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

Затем в файле "models.py" мои базы данных создаются следующим образом:

class ToDoList(models.Model):
    
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user", null=True)
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name
    
class Item(models.Model):
    todolist = models.ForeignKey(ToDoList, on_delete=models.CASCADE)
    text = models.CharField(max_length=200)
    complete = models.BooleanField()
    
    def __str__(self):
        return self.text

Итак, судя по коду ошибки, я предполагаю, что мне нужно добавить атрибут user_id в качестве внешнего ключа, указывающего на пользователей или что-то еще? Парень в видео не получил это сообщение об ошибке. Я предполагаю, что это потому, что это было 3 года назад или что-то в этом роде, но я не знаю точно.

Я подумал, что раз он ищет какой-то атрибут "user_id", то я должен добавить его в модели, но это не привело к успеху. Это:

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

# Models

class ToDoList(models.Model):
    
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user", null=True)
    name = models.CharField(max_length=200)
    user_id = models.BigAutoField(on_delete=models.CASCADE, primary_key=True)

    def __str__(self):
        return self.name
    
class Item(models.Model):
    todolist = models.ForeignKey(ToDoList, on_delete=models.CASCADE)
    text = models.CharField(max_length=200)
    complete = models.BooleanField()
    
    def __str__(self):
        return self.text

... при попытке создать тодолист я получил такой код ошибки:

TypeError: Field.init() получил неожиданный аргумент ключевого слова 'on_delete'

Ок, мне помог коллега, и решение заключалось в том, чтобы просто удалить базу данных sqlite3 и заново запустить миграции, чтобы установить все заново. Спасибо за помощь, но моя проблема решена.

Вернуться на верх