Django OperationalError:没有此类列

时间:2020-02-24 17:27:18

标签: python django sqlite

我正在尝试从添加到Django项目中的sqlite数据库读取值,但是它不起作用。 我在Python Shell中进行了测试,当我尝试查看数据时,返回的只是以下错误:

from myapp.models import my_data
my_data.objects.all()

OperationalError:没有这样的列:my_table_name.id

这是我的models.py文件的外观:

class my_data(models.Model):
    status = models.TextField(db_column='STATUS', blank=True, null=True)
    name_1 = models.TextField(db_column='NAME_1', blank=True, null=True) 
    name_2 = models.TextField(db_column='NAME_2', blank=True, null=True)  
    dep = models.IntegerField(db_column='DEP', blank=True, null=True) 
    name_reg = models.TextField(db_column='NAME_REG', blank=True, null=True)
    reg = models.IntegerField(db_column='REG', blank=True, null=True)
    name_com = models.TextField(db_column='NAME_COM', blank=True, null=True)
    avgp = models.IntegerField(db_column='AVGP', blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'my_table_name'

我的settings.py文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'my_table_name': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db_my_table_name.sqlite3'),
    }
}

我还执行了python manage.py makemigrationspython manage.py migrate命令。

知道我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

我根据您的评论写这篇文章,因为您说它可行:

my_data模型添加ID字段:

AutoField like: id = models.AutoField(primary_key=True)

提示:在Django中,模型名称应遵循CamelCase约定。

答案 1 :(得分:0)

之前我遇到了同样的问题,然后我将下面的代码用于我的 models.py 文件,这已经解决了问题

class ModelName(models.Model):
    id = models.AutoField(primary_key=True)

这可以帮助您解决上述问题