跳转到主要内容

Django比 fixtures 内容生成应用稍微智能一些。

项目描述

Django Generate

Django比 fixtures 内容生成应用稍微智能一些。

django-generate 添加了一个名为 generate 的管理命令,允许您从动态创建的对象 JSON 描述中创建对象。它的主要重点是生成项目开发和测试期间使用的测试内容。对象仅通过 Django 的 get_or_create 方法创建一次。需要的地方会创建继承基模型对象。文件字段也可以从任意资源中填充。这样,与 Django 内置的 fixtures 功能 相比,django-generate 简化了复杂对象的生成。

此软件包是更大的 Jmbo 项目的组成部分。

安装

  1. 安装或添加 django-generate 到您的 Python 路径。

  2. generate 添加到您的 INSTALLED_APPS 设置。

使用方法

为了生成内容,您需要执行generate管理命令。此命令将在INSTALLED_APPS设置中指定的每个应用中搜索generator模块,并调用其generate方法。此方法应返回一个要创建的JSON序列化对象列表。

注意:在syncdb后也会触发生成,此时您将被提示生成默认内容。如果您回答是,则会以与手动运行generate命令相同的方式生成内容。

例如,让我们创建5个虚拟用户进行测试。

  1. 在您想要生成内容的应用的路径下创建一个generator.py文件。

  2. 确保您的应用已指定在您的INSTALLED_APPS设置中。还要确保您的应用有一个models.py文件,以便Django可以正确安装它。

  3. 编辑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序列化对象列表。

  1. 运行生成管理命令以生成对象

    $ python manage.py generate

命令完成后,您应该在数据库中拥有5个新创建的员工用户。如果您再次运行生成命令,则不会创建新用户,因为django-generate检测到之前已生成的对象。

查看jmbo-post的生成器,了解如何非常容易地使用django-generate创建具有继承结构、关系和文件资源的对象。

Praekelt Foundation

  • Shaun Sephton

  • Jonathan Bydendyk

  • Euan Jonker

  • Hedley Roos

变更日志

0.0.6

  1. 使用_default_manager而不是objects管理器以允许覆盖。

0.0.5

  1. 仅传递支持精确查找的字段以获取_or_create。

0.0.4

  1. 使用exists优化。

  2. 在方法执行的每次执行中都强制提交,因为设置可能指定事务管理数据库层。

  3. 防止对save()的冗余调用。

  4. 支持直接分配外键ID。

0.0.3 (2011-08-12)

  1. 修正清单。

0.0.2 (2011-07-26)

  1. 文档。

0.0.1

  1. 初始发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-generate-0.0.6.tar.gz (4.0 MB 查看哈希值)

上传时间

构建分布

django_generate-0.0.6-py2.7.egg (4.0 MB 查看哈希值)

上传时间 源码

支持