JET*_*JET 4 mysql django amazon-web-services amazon-elastic-beanstalk makemigrations
上下文:Django 1.7; MySQL 5.6.23; 在AWS上运行(不确定Linux操作系统版本)
我有一个Django 1.7项目.当我在我的Windows笔记本电脑上进行本地构建数据库的初始makemigrations时,我得到的表格以我的app名称为前缀,如下所示:
myapp_person(适用于Django
class Person(models.Model))myapp_personmap(适用于Django
class PersonMap(models.Model))
当我进行迁移并迁移到AWS Linux服务器时,这些表的命名方式如下:
MyApp_person
MyApp_personmap
注意应用程序名称前缀的意外CamelCase和其余表名称的预期小写.
我的问题:
要使用您自己的自定义表名,您需要db_table在models Meta选项中定义一个参数.
要覆盖数据库表名,请使用
db_tableMeta类中的参数.
Query-1:什么控制appname前缀?
如果尚未db_table在模型Meta类中定义选项,则Django会使用模型的类名自动派生名称app label.
来自官方文档:
Django自动从模型类的名称和包含它的应用程序派生数据库表的名称.模型的数据库表名是通过建立加盟模式的
“app label”-你在使用的名称manage.py startapp- 到模型的类名,两者之间有下划线.
例如:
如果您xyz创建了一个应用程序manage.py startapp xyz,则定义为类的模型Abc将具有名为的数据库表xyz_abc.
Query-2:使用自定义表名创建表
如果要使用自定义表名,则需要db_table在模型中使用该选项Meta.
在这里,您可以用小写显式定义db表名.
class Person(models.Model):
class Meta:
db_table = '"myapp_person"' # define your custom name
class PersonMap(models.Model):
class Meta:
db_table = '"myapp_personmap"' # define your custom name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4447 次 |
| 最近记录: |