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