大多数Django教程都是将models放在models.py文件(模块)中, 然而随着models类的增加, 将类放在一个文件中太混乱了, 于是将models做成一个package:
models/
__init__.py
usermodels.py
othermodel.py
这样就可以将models定义拆分到多个模块中, 但是当用命令同步数据时发现不可用:
$python manage.py sqlall blog
不会生成数据库创建命令(APP的名字是blog) ,需要做如下更改:
在__init__.py中import模块:
from usermodels import *
from othermodel import *
在定义model的类中加一个内部类Meta:
class User(models.Model):
title = models.CharField(max_length = 100)
class Meta:
app_label = 'blog'
app_lable的值为APP的名称,这样就可以将models定义到多个文件中了。
Meta中app_label 意义
这个选型只在一种情况下使用,就是你的模型不在默认的应用程序包下的models.py文件中,这时候需要指定你这个模型是哪个应用程序的。
Options.app_label
如果一个model定义在默认的models.py,例如如果你的app的models在myapp.models子模块下,你必须定义app_label让Django知道它属于哪一个app
app_label = 'myapp'
更多Meta的意义请移步传送门