Запустите скрипт для заполнения django db

Я хочу запустить следующий скрипт, чтобы предварительно заполнить мою модель именами и т. д. Но я получаю сообщение об ошибке. Скрипт

first_names = first_names.split('\n')
last_names = last_names.split('\n')
phones=[str(i) for i in range(2310000000,2310999999, 1563)]
emails = ['test%[email protected]' %i for i in range(0,144)]

import os
os.environ['DJANGO_SETTINGS_MODULE']='project.settings'

from customer.models import Customer
from django.contrib.auth.models import User

users = User.objects.all()

if __name__ == "__main__":
    for i in range(10):
        customer = Customer(first_name=choice(first_names), last_name=choice(last_names),
                        telephone=choice(phones),email=choice(emails), creator=choice(users))
        customer.save()

и ошибка

Traceback (most recent call last):
  File "populatedb.py", line 431, in <module>
    from customer.models import Customer
ImportError: No module named customer.models

dir_tree (если я могу правильно "нарисовать")

-project_dir
|
|--customer
|--|
   |--models.py(etc...)
|
|--project(the settings file is here)
|--
|--another_app
|--scripts (here is my python script)

person Apostolos    schedule 26.11.2013    source источник
comment
Где находится сам скрипт?   -  person bozdoz    schedule 26.11.2013
comment
На самом деле это не имеет отношения к вопросу, но есть инструмент командной строки UNIX под названием tree, который значительно упрощает рисование структур каталогов. Попробуйте сделать sudo apt-get install tree, если вы используете Linux.   -  person wdh    schedule 26.11.2013
comment
К сожалению, я использую Windows на работе ... у меня дома есть Linux (команда дерева, которую я имею в виду).   -  person Apostolos    schedule 26.11.2013
comment
Возможный дубликат скрипта Django для доступа к объектам модели без с помощью оболочки manage.py   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 13.05.2016


Ответы (3)


Вы можете добавить свой системный путь к своему сценарию, например:

import sys
sys.path.append('/path/to/your/djangoproject/')

Надеюсь это поможет.

person Jingo    schedule 26.11.2013

Мой скрипт заработал после того, как я добавил эти строки перед установкой как os.environ var project_settings

script_path = os.path.dirname(__file__)
project_dir = os.path.abspath(os.path.join(script_path,'..','..','project_folder'))
sys.path.insert(0, project_dir)
os.environ['DJANGO_SETTINGS_MODULE']='rhombus.settings'

Спасибо вам всем!

person Apostolos    schedule 26.11.2013

Вы также можете создавать собственные команды администратора django и выполнять их с помощью manage.py: https://eli.thegreenplace.net/2014/02/15/programmatically-populating-a-django-database https://docs.djangoproject.com/en/2.1/howto/custom-management-commands/

person Ivan    schedule 27.11.2018