我正在研究一些Django项目,在大多数项目中,我都有要导入的初始数据。
这个数据不是JSON,不如fixture examples in the Django docs所示 - 它往往是凌乱的Excel或CSV文件。这些脚本看起来像下面的代码片段,我只是将它们作为独立的Python运行,因为我不知道更好:
import sys
from django.core.management import setup_environ
sys.path.append(LOCATION OF YOUR DJANGO PROJECTS, EX: 'C:\django')
from mysite import settings
setup_environ(settings)
from PROJECT_NAME.APP_NAME.models import MODEL_NAME
import csv
reader = csv.reader(open(COMPLETE PATH TO YOUR DATA, EX: "C:/django/mysite/restaurants.csv"), dialect='excel')
for row in reader:
COLUMN_ONE_TITLE = row[0]
COLUMN_TWO_TITLE = row[1]
MODEL_NAME.objects.get_or_create(MY_FIRST_COLUMN=COLUMN_ONE_TITLE, MY_SECOND_COLUMN=COLUMN_TWO_TITLE)
我觉得当我将这些项目提交给GitHub或将它们发送到客户端或其他什么时,我应该包含导入脚本。他们是该项目的重要组成部分。
Django中是否有标准方法来存储我编写的导入脚本以导入此数据?
他们应该在项目中的哪个位置?我应该使用管理命令吗?
谢谢!
答案 0 :(得分:3)
我喜欢将它们放在管理命令中 - 当其他人在项目上工作时,这些命令就是那些不熟悉初始开发期间所做选择的人所期望的。
答案 1 :(得分:1)
Django支持pluggable serialization个模块。如果您可以安排CSV格式作为反序列化器,则可以使用常规loaddata命令。
答案 2 :(得分:0)
如果将所有代码放在实用程序函数中该怎么办?所以你的views.py会有from utils import csv_import
或类似的东西。这样,您的视图就可以以编程方式使用该功能。
答案 3 :(得分:0)
我首先会建议Martin或Luke建议的内容。
但如果由于某种原因这对你不起作用,那么将脚本放在git项目的根目录中是有道理的。注意,我没有建议把它放在django项目的根目录中(不过,坦率地说,这也不是一个错误的想法),但我建议django项目是git repo的子文件夹。因为你可以将这些帮助文件放在一个不会堵塞django项目的地方。