2015-07-06 43 views
0

我正在写一个脚本来导入数据到现有的Django模型:如何将django模型导入脚本?

import csv 
from django.db import models 
from movies.models import Movie 
from sys import argv 

script, filename = argv 

with open(filename) as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
     print (row) 
     # _, created = Movie.title.get_or_create(
     #  title=row[0], 
     # ) 

但我试图导入我的模型时遇到了此问题:

Traceback (most recent call last): 
    File "import.py", line 3, in <module> 
     from movies.models import Movie 
ImportError: No module named 'movies' 

回答

0

你有你的注册settings.py中的应用“列表”在INSTALLED_APPS下?
也尝试使用
python manage.py migrate
迁移模型该方法似乎是正确的,并且它是使用csv模块的标准方式。

您可以使用回溯编辑您的问题,以便详细了解您的问题。

+0

我的应用程序实际上被称为'电影'(已注册),该项目是'列表'。没有什么可以迁移的。当我启动服务器时,应用程序和模型完美工作,但是当我尝试运行脚本时,问题就会出现。 –

+0

由于您的应用程序名称是电影,您应该以这种方式导入模型: from movies.models import Movie –

+0

嗯。我试过,但现在的错误是“ImportError:没有名为'电影'的模块” –

0

首先,以类似于manage.py文件的方式加载您的django设置。在这种情况下,“列表”是项目名称,“电影”是应用程序名称。

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lists.settings") 

import csv 
from django.db import models 
from movies.models import Movie 
from sys import argv 

script, filename = argv 

with open(filename) as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
     print (row) 
     # _, created = Movie.title.get_or_create(
     #  title=row[0], 
     # ) 

最后,请确保将脚本放置在项目的根目录中。