自动为您应用生成合理的数据库条目
项目描述
介绍
Django-Scaffolding为您的应用创建伪真实世界的占位符数据。数据可以是任何类型,如名称、城市、图片和模型实例。它不是一个模拟框架,它创建真实的django模型实例。
用法
将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
在 startdate 和 enddate 之间创建一个随机日期。startdate 和 enddate 必须是 datetime.date 实例。
RandomDatetime
在 startdate 和 enddate 之间创建一个随机 datetime 实例。startdate 和 enddate 必须是 datetime.datetime 实例。如果传递了参数 timezone,则实例是时区感知的。
UsCity
返回一个美国城市和州的名字。例如,“纽约,NY”。
BookTitle
创建一个书名。这是对 Random Title Generator 的 Python 实现。
URL
从大约 10000 个 URL 的列表中创建一个可链接的 URL。
RandomEmail
创建一个随机电子邮件。参数是 length 和 domain。
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。可选参数 格式 可以是 uuid、hex 或 int 之一。默认为 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 99cb0b5367aa4f9c081836322de32aa5125af7d8b6d9b765fb6047e92e5ad28e |
|
MD5 | 7e8e470acd055837d53148f075da07cd |
|
BLAKE2b-256 | ec3986e20f8af7377e300bc0147eeecbcdd58622d041539d6be3323377ac8e7e |