Я пытаюсь создать доступ для конкретного пользователя к моему сайту todolist с помощью Django
У меня возникает ошибка, когда я делаю миграции в командной строке. Пожалуйста, помогите
-models.py
from django.db import models
from django.contrib.auth.models import User
class ToDoList(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="todolist", 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=300)
complete = models.BooleanField()
def __str__(self):
return self.text
Когда я попытался сделать миграции в командной строке, я получил эту ошибку cmd-pic
Я использовал эту команду:
python manage.py makemigrations
python manage.py migrate
Я использовал учебник от TechWithTim (ссылка: https://www.youtube.com/watch?v=sm1mokevMWk&t=7589s), чтобы сделать этот проект. Он работает нормально для него, но не для меня.
Кто-то, пожалуйста, скажите мне, где я ошибся.
Request передается представлениям. response - это то, что возвращается из представлений, а не наоборот (хотя запрос можно назвать по-разному, но лучше делать это осмысленно).
ForeignKey создает отношение "один-ко-многим". Модель, в которой объявлено это поле, считается вторичной, а модель, которая объявлена в этом поле, считается первичной. Описание Здесь:
Используя первичную модель (ToDoList), вы можете получить связанные с ней данные из вторичной модели (Item). Для этого в первичной модели по умолчанию создается специальное свойство (объект) с именем secondary model_set. В нашем случае: item_set.
Обратите внимание, что свойство написано в нижнем регистре (свойство создается с маленькой буквы). Вы также можете определить его самостоятельно, используя related_name (в этом случае оно будет таким, каким вы его напишите, без префикса _set).
В представлении я сначала получаю данные из первичной модели на основе вторичной(aaa.todolist то есть, обращаясь к полю вторичной модели, я получаю имя первичной модели, так как первичный класс возвращает имя. А затем я получаю пользователя через имя).
Затем я использую первичную для получения данных вторичной модели (во вторичной модели я взял только первое значение). Все полученные данные отображаются на странице.
def create(request):
aaa = Item.objects.get(id=1)
name = aaa.todolist
user = aaa.todolist.user
bbb = ToDoList.objects.get(id=1)
fff = bbb.item_set.all()[0]#takes the first element from the QuerySet .
print(bbb.item_set.all())
return HttpResponse(f"""
<p>ferst name: {name}</p>
<p>ferst user: {user}</p>
<p>second todolist: {fff.todolist}</p>
<p>second text: {fff.text}</p>
<p>second complete: {fff.complete}</p>
""")
urls.py
urlpatterns = [
path("create/", create, name="create"),
]