在Django中接收到无此类列错误

2024-09-30 22:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为比萨饼中的配料制作单独的页面,我收到了一个没有这样的列错误,我不确定发生了什么。在做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

Tags: djangoinpyenvliblinesiteonedrive