Django比 fixtures 内容生成应用稍微智能一些。
项目描述
Django Generate
Django比 fixtures 内容生成应用稍微智能一些。
django-generate 添加了一个名为 generate 的管理命令,允许您从动态创建的对象 JSON 描述中创建对象。它的主要重点是生成项目开发和测试期间使用的测试内容。对象仅通过 Django 的 get_or_create 方法创建一次。需要的地方会创建继承基模型对象。文件字段也可以从任意资源中填充。这样,与 Django 内置的 fixtures 功能 相比,django-generate 简化了复杂对象的生成。
此软件包是更大的 Jmbo 项目的组成部分。
安装
安装或添加 django-generate 到您的 Python 路径。
将 generate 添加到您的 INSTALLED_APPS 设置。
使用方法
为了生成内容,您需要执行generate管理命令。此命令将在INSTALLED_APPS设置中指定的每个应用中搜索generator模块,并调用其generate方法。此方法应返回一个要创建的JSON序列化对象列表。
注意:在syncdb后也会触发生成,此时您将被提示生成默认内容。如果您回答是,则会以与手动运行generate命令相同的方式生成内容。
例如,让我们创建5个虚拟用户进行测试。
在您想要生成内容的应用的路径下创建一个generator.py文件。
确保您的应用已指定在您的INSTALLED_APPS设置中。还要确保您的应用有一个models.py文件,以便Django可以正确安装它。
编辑generator.py文件,使其看起来像这样
def generate(): objects = [] for i in range(1, 6): objects.append({ "model": "auth.User", "fields": { "username": "user_%s" % i, "first_name": "User %s Name" % i, "is_staff": True, }, }) return objects
这实际上只是动态生成大量JSON序列化对象。返回的objects列表如下所示
[{'fields': {'username': 'user_1', 'first_name': 'User 1 Name', 'is_staff': True}, 'model': 'auth.User'}, {'fields': {'username': 'user_2', 'first_name': 'User 2 Name', 'is_staff': True}, 'model': 'auth.User'}, {'fields': {'username': 'user_3', 'first_name': 'User 3 Name', 'is_staff': True}, 'model': 'auth.User'}, {'fields': {'username': 'user_4', 'first_name': 'User 4 Name', 'is_staff': True}, 'model': 'auth.User'}, {'fields': {'username': 'user_5', 'first_name': 'User 5 Name', 'is_staff': True}, 'model': 'auth.User'}]
这是一个正常的Django JSON fixtures对象列表,将被创建。您也可以简单地将此列表硬编码并返回,而不是生成。重点是,generate方法应返回一个要创建的JSON序列化对象列表。
运行生成管理命令以生成对象
$ python manage.py generate
命令完成后,您应该在数据库中拥有5个新创建的员工用户。如果您再次运行生成命令,则不会创建新用户,因为django-generate检测到之前已生成的对象。
查看jmbo-post的生成器,了解如何非常容易地使用django-generate创建具有继承结构、关系和文件资源的对象。
Praekelt Foundation
Shaun Sephton
Jonathan Bydendyk
Euan Jonker
Hedley Roos
变更日志
0.0.6
使用_default_manager而不是objects管理器以允许覆盖。
0.0.5
仅传递支持精确查找的字段以获取_or_create。
0.0.4
使用exists优化。
在方法执行的每次执行中都强制提交,因为设置可能指定事务管理数据库层。
防止对save()的冗余调用。
支持直接分配外键ID。
0.0.3 (2011-08-12)
修正清单。
0.0.2 (2011-07-26)
文档。
0.0.1
初始发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。