跳转到主要内容

自动为您应用生成合理的数据库条目

项目描述

介绍

Django-Scaffolding为您的应用创建伪真实世界的占位符数据。数据可以是任何类型,如名称、城市、图片和模型实例。它不是一个模拟框架,它创建真实的django模型实例。

https://travis-ci.org/sbaechler/django-scaffolding.svg?branch=master

用法

scaffolding添加到您的INSTALLED_APPS

在您的应用目录中创建一个scaffolds.py模块,其中包含Scaffolding类。

示例models.py

class Entry(models.Model):
    first_name = models.CharField('First Name', max_length=32)
    last_name = models.CharField('Last Name', max_length=32)
    comment = models.TextField('Comment', blank=True)
    image = models.ImageField(upload_to='uploads/%Y/%m/%d', blank=True, null=True)
    contest = models.ForeignKey(Contest)
    ...

示例scaffolds.py

import scaffolding
from scaffolding.library.flickr import FlickrInteresting

class EntryScaffold(object):
    first_name = scaffolding.FirstName(max_length=32)
    last_name = scaffolding.LastName(max_length=32)
    comment = scaffolding.OrBlank(scaffolding.LoremIpsum, paragraphs=1)
    contest = scaffolding.ForeignKey(queryset=Contest.objects.filter(name='testcontest'))
    image = scaffolding.RandomInternetImage(backend=FlickrInteresting)

    @classmethod
    finalize(cls, obj):
        # Just an example method
        obj.end_date = obj.start_date + datetime.timedelta(days=60)


scaffolding.register(Entry, EntryScaffold)

注意ForeignKey字段的语法。您可以将整数分配给该字段,但请确保具有相应键的元素确实存在。当然,您也可以将对象分配给FK字段。

要使用flickr库,您需要安装Flickr API:http://stuvel.eu/flickrapi版本1.4.5。

运行管理命令来创建数据

manage.py scaffold myapp.MyModel 20

数字表示要创建的条目数量。

在解释器或视图中使用脚手架

您可以在shell中尝试包含的类或您自己的模块。所有类都是生成器(称为管),用于生成字段值。启动 ./manage.py shell

>>> from scaffolding import *
>>> r = RandInt(min=1, max=5)
>>> r.next()
[4]
>>> r.next()
[2]

>>> n = Name(gender='m')
>>> n.next()
[u'Ethan Schmid']
>>> n.next()
[u'Michael Schneider']

使用 finalize()

如果 Scaffold 类包含 finalize(cls, obj) 类方法,则在模型创建后和保存前调用该方法。这使得能够设置依赖于字段值的属性。

包含的管

名称

生成随机名称。<性别>可以是‘男性’、‘女性’、‘m’或‘f’。

FirstName 和 LastName

仅生成第一或姓氏名称。同时接受 gender 属性。

LoremIpsum

生成 Lorem Ipsum 文本。段落数量在 paragraphs 中定义。

RandInt

在 min 和 max 之间生成一个随机整数。

ForeignKey

遍历 queryset。将项目作为 ForeignKey 分配给字段。如果项目不足,则循环。

ForeignKeyOrNone

与可空 ForeignKeys 相同。split 是正数的权重。0.2 产生 80% 的 None。

RandomInternetImage

使用互联网源为 ImageField 创建一个随机图像。包含一个 Flickr ‘每日有趣图片’抓取器。

RandomDate

startdateenddate 之间创建一个随机日期。startdate 和 enddate 必须是 datetime.date 实例。

RandomDatetime

startdateenddate 之间创建一个随机 datetime 实例。startdate 和 enddate 必须是 datetime.datetime 实例。如果传递了参数 timezone,则实例是时区感知的。

UsCity

返回一个美国城市和州的名字。例如,“纽约,NY”。

BookTitle

创建一个书名。这是对 Random Title Generator 的 Python 实现。

URL

从大约 10000 个 URL 的列表中创建一个可链接的 URL。

RandomEmail

创建一个随机电子邮件。参数是 lengthdomain

AlwaysTrue

返回 True

AlwaysFalse

返回 False

TrueOrFalse

随机返回 true 或 false。您可以通过指定 true 或 false 来设置 true 或 false 的比率,例如 false=3 返回比 true 多 3 倍的 False。

StaticValue

接受一个参数 value 并将其分配给字段。

RandomValue

接受一个列表(不是可迭代对象)作为它的 lst 参数,并从中返回一个元素。您也可以将其用于选择字段

[c[0] for c in MyModel.MYCHOICES]

Every Value

接受一个可迭代对象作为它的 values 参数,并按顺序遍历它们。

OrNone

这是一个特殊的管,它将其第一个参数作为另一个管。它将传递的类或 None 分配给值。这对于可空字段很有用。您可以将包装类的参数作为 OrNone 类的参数传递。还有一个附加参数:split。它定义了有效与 None 的比率。0.2 的比率将提供 80% 的 None。

OrBlank

与 OrNone 相同,但使用空字符串而不是 None。非常适合具有 blank=True 的文本字段。

Uuid

生成一个唯一的字母数字ID。可选参数 格式 可以是 uuidhexint 之一。默认为 hex。如果格式为 uuid,则生成一个 Uuid4 实例。

贡献

创建自定义对象。后端类是第一个参数。后端类必须继承自 Tube

user = scaffolding.Contrib(FacebookTestUser, app_name='contest')

FacebookTestUser

从 Facebook 应用的测试用户池中创建 Facebook 用户。如果测试用户不足,将自动创建新的用户。这需要 django-facebook-graph API。 https://github.com/feinheit/django-facebook-graph

该模块位于 external.facebook_graph

项目详情


下载文件

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

源分发

django-scaffolding-0.2.6.tar.gz (120.1 kB 查看哈希值)

上传时间

由以下支持