我正在尝试为比萨饼中的配料制作单独的页面,我收到了一个没有这样的列错误,我不确定发生了什么。在做Python速成课程第二版(第18章,前8节)的一个练习时,我尝试了应用迁移,我能够浏览索引和比萨饼的页面,但无法输入每个比萨饼上显示配料的页面,如果我发布了任何不重要的代码,请原谅
models.py
from django.db import models
# Create your models here.
class Topping(models.Model):
"""A pizza topping"""
topping = models.CharField(max_length=30)
def __str__(self):
"""Return a string representation of the topping."""
return self.topping
class Pizza(models.Model):
"""A pizza type"""
name = models.CharField(max_length=30)
toppings = models.ManyToManyField(Topping, blank=True)
def __str__(self):
"""Return a string representation of the pizza type"""
return self.name
url.py
"""Defines URL patterns for pizzas"""
from django.urls import path
from . import views
app_name = 'pizzas'
urlpatterns = [
#Home page
path('', views.index, name='index'),
#Page that shows all the pizzas.
path('pizzas/', views.pizzas, name='pizzas'),
#Detail page for a single topic.
path('pizza/<int:pizza_id>/', views.pizza, name='pizza'),
]
views.py
from django.shortcuts import render
from .models import Pizza
# Create your views here.
def index(request):
"""The home page for pizzas."""
return render(request, 'pizzas/index.html')
def pizzas(request):
"""Show all the pizzas"""
pizzas = Pizza.objects.all()
context = {'pizzas': pizzas}
return render(request, 'pizzas/pizzas.html', context)
def pizza(request, pizza_id):
"""Show all toppings on a pizza"""
pizza = Pizza.objects.get(id=pizza_id)
toppings = pizza.toppings.all()
context = {'pizza': pizza, 'toppings': toppings}
return render(request, 'pizzas/pizza.html', context)
base.html
<!--Base template/Parent template-->
<p>
<a href="{% url 'pizzas:index' %}">Pizzeria</a> -
<a href="{% url 'pizzas:pizzas' %}">Pizzas</a>
</p>
{% block content %}{% endblock content %}
pizza.html
{% extends 'pizzas/base.html' %}
{% block content %}
<p>Pizza: {{ pizza }}</p>
<p>Toppings:</p>
<ul>
{% for topping in toppings %}
<li>
<p>{{ topping.topping }}</p>
</li>
{% empty %}
<li>There are no toppings for this pizza yet.</li>
{% endfor %}
</ul>
{% endblock content %}
错误:
django.db.utils.OperationalError: no such column: pizzas_topping.topping
[24/Jun/2021 11:20:31] "GET /pizza/2/ HTTP/1.1" 500 185486
回溯:
[24/Jun/2021 11:43:02] "GET / HTTP/1.1" 200 192
[24/Jun/2021 11:43:03] "GET /pizzas/ HTTP/1.1" 200 321
Internal Server Error: /pizza/1/
Traceback (most recent call last):
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\sqlite3\base.py", line 423, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such column: pizzas_topping.topping
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\pizzas\views.py", line 21, in pizza
return render(request, 'pizzas/pizza.html', context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\template\defaulttags.py", line 168, in render
len_values = len(values)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\models\query.py", line 262, in __len__
self._fetch_all()
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\models\query.py", line 1324, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\models\query.py", line 51, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\models\sql\compiler.py", line 1175, in execute_sql
cursor.execute(sql, params)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\chawa\OneDrive\Desktop\pizzeria\ll_env\lib\site-packages\django\db\backends\sqlite3\base.py", line 423, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such column: pizzas_topping.topping
[24/Jun/2021 11:43:04] "GET /pizza/1/ HTTP/1.1" 500 185462
目前没有回答
相关问题 更多 >
编程相关推荐