首页 > 自己创建的django package怎么生成模型创建脚本?

自己创建的django package怎么生成模型创建脚本?

我想创建一个公共的django-package,可以在其它 django项目中引用 。

用cookiecutter创建一个django package项目

cookiecutter https://github.com/pydanny/cookiecutter-djangopackage.git

里面会自动生成一个model
models.py

# -*- coding: utf-8 -*-

from django.db import models

from model_utils.models import TimeStampedModel


class conf(TimeStampedModel):
    pass

但是生成的文件目录结构中,不像其它 django项目,会有manage.py,然后可以通过

python manage.py makemigrations
python manage.py migrate

创建数据库迁移脚本,然后在在数据库中创建相应的表。

但是在这个package项目中,并没有manage.py文件。
那我这个model,怎么创建迁移脚本呢?

我的目的,是想创建一个类似于django.contrib.auth这样的包,auth这个包,在其它 django项目中引用 之后,可以在其它Django应用中,通过python manage.py migrate直接创建Auth中的user/group等表。我要是想让我自己的package包,也有这种效果,怎么做呢?


想了解怎么办的m我吧.这个问题没人感兴趣, 我也懒的写怎么处理的了.


你可以自己写一个startproject命令
我写了一个flask的startproject: mana
大概的思路如下

  1. 你本地写一个项目原型(你可以加上manage.py, 带Auth的User model)

  2. 然后考虑动态的部分(生成项目可能会改变的部分, 比如:项目名称), 将动态的部分使用类似 #{{ xxx }} 的注解格式标记

  3. 然后编写命令(推荐click), 关键就是使用python os.walk 遍历你的原型(需要注意使用绝对路径) 复制到你生成的项目中, 动态的部分读文件替换#{{ xxx }}.

  4. 这样你就可以

    $ yourcommand startproject YourDjangoProject
    $ cd YourDjangoProject  (你想要的项目原型: 含manage.py, 含基本的User模型)
    $ python manage.py makemigrations
    $ python manage.py migrate
    
    

cookiecutter 是一个脚手架, 如果它的功能你不满意可以自己写一个.

【热门文章】
【热门文章】