一个简单的标记和处理器,使初始模型不那么乏味。

django-modelish的Python项目详细描述


Because programmers are lazy…

modelish是一个快速的尝试,可以节省一些按键。许多数据建模工具 是一个gui噩梦,有下拉菜单和许多按钮。但有时, 尤其是当你画出一些草图,写出完整的django模型时 可能有点乏味。

modelish将以 为模型定义生成python代码。

通常我会说源代码生成是个“坏主意”,但实际上甚至 在python中,django模型主要是一种声明性语法

快速启动

安装django谓词:

pip install django-modelish

然后,您可以开始制作这样的模型

Poll:doc:This is the poll modelquestion:type:charmax_length:200pub_date:type:datetimeargs:date publishedChoice:poll:type:fkargs:[Poll]choice_text-char:max_length:200votes:type:int

然后您只需使用cli工具:

modelish path-to-file.yml

这将生成如下代码:

classPoll(models.Model):"""This is the poll model"""pub_date=models.DateTimeField('date published')question=models.CharField(max_length=200,blank=True)classChoice(models.Model):choice_text=models.CharField(max_length=200,blank=True)poll=models.ForeignKey('Poll')votes=models.IntegerField()

语法

语法非常简单:

<ModelName>:
    [doc: docstring]
    <fieldname>[-type-alias]:
        [type: type-alias],
        [args: arglist],
        kwarg: value

字段类型由缩短的“type”别名表示,因此“char”变为 “models.charfield”等(见下面的语法)。

可以通过以下两种方式之一指定类型,即在字段名后面加上 连字符,或在字段定义中显式声明为type

将位置参数指定为方括号中的显式列表, 或作为逗号分隔的字符串。

字段定义的其余块由Kwarg/值对组成。

使用语法

modelish使用由类型别名和默认值组成的语法。标准 类型为:

auto:AutoFieldbigint:BigIntegerFieldbool:BooleanFieldchar:CharFielddate:DateFielddatetime:DateTimeFielddecimal:DecimalFieldemail:EmailFieldfile:FileFieldfloat:FloatFieldimage:ImageFieldint:IntegerFieldip:IPAddressFieldgip:GenericIPAddressFieldnbool:NullBooleanFieldpint:PositiveIntegerFieldpsint:PositiveSmallIntegerFieldslug:SlugFieldsint:SmallIntegerFieldtext:TextFieldtime:TimeFieldurl:URLFieldfk:ForeignKeym2m:ManyToManyFieldtimestamp:DateTimeField

对于每种类型-语法中都定义了一组默认的kwargs defaults

defaults:bool:default:truechar:max_length:100blank:truenbool:null:truetimestamp:auto-now:true

通过传递您自己的yaml文件,可以替换或增强此默认语法。 命令。使用--grammar替换默认语法,并使用 --extra-grammar合并并用自己的语法更新默认语法 增加或改变。

就这样-这不是什么功能齐全的模型构建器,或者 数据建模器,它只是一个简单的dslish引导工具 一个models.py的起点,少一点输入。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?