2015-07-06 85 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], 
     # ) 

最後,請確保將腳本放置在項目的根目錄中。