db_table选项在Django模型中不起作用

时间:2014-04-09 12:47:02

标签: django django-models

我想从表名中删除app标签,因此我有一个非常简单的Web应用程序。

我正在使用以下模型:

class Gender(models.Model):
    name = models.CharField(max_length=20)

    class Meta:
        db_table = 'gender'

结果并不像预期的那样:

>>> Gender.objects.all()
ProgrammingError: (1146, "Table 'project.gender' doesn't exist")

为什么元选项不起作用?

我正在使用Django 1.6.2

2 个答案:

答案 0 :(得分:2)

db_table选项为用户提供了指定数据库表名的灵活性。

从错误看,数据库中不存在表gender。这意味着在指定此选项后,您尚未执行syncdb。请执行syncdb或者如果您使用的是南schemamigration

答案 1 :(得分:0)

如果您要使用这样的方式更改型号名称,我会提供解决方案。

class Gender(models.Model):
    name = models.CharField(max_length=20)


    class Meta:
        db_table = 'gender'

之后,您必须再次迁移模型

  1. python manage.py makemigrations
  2. python manage.py migrate