Boky
Boky

Reputation: 12064

How to import model in Django

I want to execute a python file where I want to check if there are new rows in a csv file. If there are new rows, I want to add them to a database.

The project tree is as follows:

enter image description here

Thus, the file which I want to execute is check_relations.py inside relations folder.

check_relations.py is as follows:

from master.models import TraxioRelations

with open('AUTOI_Relaties.csv', 'rb') as tr:
    traxio_relations = tr.readlines()

for line in traxio_relations:
    number = line.split(';')[0]
    number_exists = TraxioRelations.objects.filter(number=number)
    print(number_exists)

The model TraxioRelations is inside models.py in master folder.

When I run python check_relations.py I get an error

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

What am I doing wrong? How can I import model inside check_relations.py file?

Upvotes: 1

Views: 1751

Answers (2)

user8060120
user8060120

Reputation:

i think the most usable way it is create commands

for example in your master catalog:

master /
    management /
        __init__.py
        commands /
            __init__.py
            check_relations.py

in check_relations.py

from django.core.management.base import BaseCommand
from master.models import TraxioRelations

class Command(BaseCommand):
    help = 'check_relations by file data'

    def handle(self, *args, **options):

        with open('AUTOI_Relaties.csv', 'rb') as tr:
            traxio_relations = tr.readlines()

        for line in traxio_relations:
            number = line.split(';')[0]
            number_exists = TraxioRelations.objects.filter(number=number)
            print(number_exists)

! don't forget to change the path to the file AUTOI_Relaties.csv or put it to the new dir

and then you can run in shell:

./manage.py check_relations

Upvotes: 3

Stefan K&#246;gl
Stefan K&#246;gl

Reputation: 4733

When using Django, you are not supposed to run an individual module on its own. See eg https://docs.djangoproject.com/en/1.11/intro/tutorial01/#the-development-server.

Upvotes: 1

Related Questions