2010-01-06 55 views
3

我是来自Rails的新来的Django,我发现Django Fixtures(我收集的最常见的JSON),有点尴尬和unweildy,至少在轨道夹具比较我很熟悉。我喜欢能够嵌入一些ruby代码,例如<%= Time.now %>,或者在将外键与外键关联时(为了避免跟踪id)而引用其他固定装置。Django JSON夹具生成

所以这个问题,你如何更多地体验Django开发者构建你的灯具。你是否坐下来手动编写JSON/XML/YAML,还是有其他工具可以帮助类似于rails给我的东西?或者,在./manage.py shell中创建一些数据并将该数据转储到灯具中最简单,而不是用手写入灯具?或者甚至还有,你是否发现自己在测试类中的setUp(self)方法中输入了大量数据。也许一旦你有更多的经验,用手写这些东西是不是很乏味?

+1

如果您已经安装PyYAML(我想应该是在stdlib),你可以在YAML中写入灯具,这更令人愉快。 – LeafStorm 2010-01-07 12:07:58

回答

2

Django的管理网站非常适合快速输入虚拟数据或初始数据。然后你可以将其转储到一个json文件(或其他格式)。

http://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model

django-admin.py dumpdata | pbcopy将JSON格式的所有数据转储到剪贴板。

转储contenttypes和auth表时要小心,因为这可能会在将灯具加载回数据库时导致问题。

+2

pbcopy和pbpaste我认为是特定于mac的。在Linux中它是xsel。 http://whereswalden.com/2009/10/23/pbcopy-and-pbpaste-for-linux/ – 2010-01-09 02:02:56

+0

不知道!谢谢你的提示。 – 2010-01-11 02:16:28

+0

对dumpdata使用'--natural'标志。它将使用自然键,如果可能的话,而不是主要的ID。如果您与ContentTypes模型有关系,这一点尤其重要。 – Ski 2010-11-02 14:49:39

1

结账django-dilla。它会为您的模型生成随机数据,甚至是图像。用于测试而不需要手动将数据输入到管理员的繁琐操作。在项目中所有的数据到一个Json夹具

python manage.py dumpdata --format=json myapp > /path/to/myapp/fixtures/initial_data.json 

然后在tests.py

0

简单的数据转储内容添加到包括灯具:

class ViewTests(TestCase): 

    # load fixtures 
    fixtures = ['data2.json'] 

     def setUp(self): 
     # continue remainder of test code