Django dumpdata命令已损坏,因为它不支持任何合理的方式来缩小转储的数据量。我需要创建各种查询集的夹具(并且我不需要关心从外部模型关系中倾倒对象)。限制这些查询集的项目数量,如django-test-utils makefixture并不够。试图通过使用具有自定义管理器的代理模型来实现此目的,但此方法不起作用 - dumpdata忽略代理模型(这是合理的)。如何使用Django中的QuerySet制作灯具?
9
A
回答
28
如果dumpdata
不起作用,您可以通过Django Serializing data执行相同的操作。
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
然后在文件上写上data
。
-1
我不知道你所说的“外部模型关系”,也许一个例子有助于意味着什么,但你可以通过dumpdata你有兴趣...
manage.py dumpdata --help
Usage: ./manage.py dumpdata [options] [appname appname.ModelName ...]
模型,并有该排除开关:
-e EXCLUDE, --exclude=EXCLUDE
An appname or appname.ModelName to exclude (use
multiple --exclude to exclude multiple apps/models).
+0
我只是表示倾销并不需要跟踪与被倾销的模型相关的模型。 – pielgrzym 2012-07-20 14:08:57
1
下面的步骤将在作出对的完整的解决方案提供支持,创造各种查询集的夹具帮助。
from django.core import serializers
from django.core.management.commands.dumpdata import sort_dependencies
app_list = {}
# Add all your querysets here. The key for the dictionary can be just a
# unique dummy string (A safe hack after reading django code)
app_list['app1_name'] = FirstModel.objects.all()
app_list['app2_name'] = SecondModel.objects.all()
# The sort_dependencies will ensure that the models are sorted so that
# those with foreign keys are taken care. If SecondModel has a fk to FirstModel,
# then sort_dependencies will take care of the ordering in the json file so that
# FirstModel comes first in the fixture thus preventing ambiguity when reloading
data = serializers.serialize("json", sort_dependencies(app_list.items()))
f = open('output.json', 'w')
f.write(data)
f.close()
现在输出将在output.json
文件中可用。从JSON文件重建模型:
from django.core import serializers
for obj in serializers.deserialize('json', open('output.json').read()):
obj.save()
编辑:奇怪的是,如预期的那样sort_dependencies没有工作。所以我最终使用python ordereddict并自己决定了这个命令。
import collections
app_list = collections.OrderedDict()
相关问题
- 1. 如何在django中使用灯具?
- 2. 使用Django的QuerySet
- 3. 如何在fuelphp中制作灯具?
- 4. 如何使用Django QuerySet选择多个?
- 5. 如何在Django的QuerySet
- 6. Django的,通用的关系,使灯具
- 7. django灯具loaddata
- 8. 如何过滤Django Queryset
- 9. 如何使用django生成postgresql模式和表的灯具
- 10. 如何在使用灯具时访问django admin的音译器?
- 11. 在Django中使用fiter()然后get()queryset?
- 12. 使用queryset结果作为Django中原始sql的参数
- 13. django灯具DateTimeField runtimeWarning
- 14. 如何在django queryset中进行排序?
- 15. 在* Large * Django QuerySet中限制内存使用
- 16. 在Django的QuerySet使用布尔的
- 17. Django modelformset验证问题:如何在request.POST中使用queryset?
- 18. 如何在Django QuerySet中使用Python类型提示?
- 19. 如何使用django从QuerySet中恢复数据
- 20. 灯具与picklefield库的Django
- 21. 如何限制queryset /记录在Django管理站点中查看?
- 22. 在使用Django DirtyFields测试中使用灯具问题
- 23. 使用QuerySet的Django子查询
- 24. update()调用后的Django queryset?
- 25. 如何制作幻灯片?
- 26. 如何使用Django的queryset混合点心和算术
- 27. django中的initial_data灯具管理
- 28. django - queryset in modelForm
- 29. Django复杂queryset
- 30. Django QuerySet问题
非常好!非常感谢! – pielgrzym 2012-07-20 13:36:45