如何解决"操作错误:没有这样的列"在Django?

时间:2018-01-25 07:57:53

标签: python django

我正在为电子商务网站制作购物车应用以处理用户会话。 点击购物车部分后,我在管理页面中收到此错误:

OperationalError at /admin/carts/cart/ no such column: carts_cart.user_id
Request Method: GET
Request URL:    127.0.0.1:8000/admin/carts/cart

这是购物车型号:

from django.db import models
from django.conf import settings
from django.urls import reverse
from products.models import product 

user=settings.AUTH_USER_MODEL

class cart(models.Model):
    user        = models.ForeignKey(user, null=True, blank=True)
    products    = models.ManyToManyField(product, blank=True)
    total       = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
    updated     = models.DateTimeField(auto_now=True)
    timestamp   = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.id)

    def __unicode__(self):
        return str(self.id) 

views.py

from django.shortcuts import render
from .models import cart

def cart_home(request):
    return render(request,"carts/home.html",{})

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #ourapps

    'products',
    'search',
    'carts',
    'tags',
] 

产品,搜索,标签工作正常

4 个答案:

答案 0 :(得分:1)

我只是转到我的项目目录并手动删除了 ax = plt.subplot(236, projection='polar') n = 200 t = np.linspace(0, 2 * np.pi, n) r = np.linspace(0, max_abs, n) rg, tg = np.meshgrid(r, t) c = np.array(list(map(vector_to_rgb, tg.T.flatten(), rg.T.flatten()))) cv = c.reshape((n, n, 3)) m = ax.pcolormesh(t, r, cv[:,:,1], color=c, shading='auto') m.set_array(None) ax.set_yticklabels([]) 文件。 之后,我重新运行...

dbsqlite

一切都很顺利

答案 1 :(得分:0)

只需使用
python3 manage.py migrate --fake'app name'obo python3 manage.py migrate'app name'
 再次正确同步迁移

答案 2 :(得分:0)

就像我用过的@bharat bhushan

python3 manage.py migrate --fake 'app name' zero
python3 manage.py migrate 'app name'

但是, first 我必须手动打开sql浏览器并删除该应用程序的表,否则我将得到: OperationalError:表“ appname_classname”已存在

因此,手动删除表,然后使用上述两个命令。

答案 3 :(得分:0)

我意识到在更改模型(在models.py中)时忘记执行以下步骤时遇到了此错误

python manage.py makemigrations
python manage.py migrate

我正在使用Django 2.2,此后它没有问题