2017-08-21 3 views
0

Ich möchte eine Python-Datei ausführen, wo ich überprüfen möchte, ob es neue Zeilen in einer CSV-Datei gibt. Wenn neue Zeilen vorhanden sind, möchte ich sie zu einer Datenbank hinzufügen.So importieren Sie das Modell in Django

Der Projektbaum ist wie folgt:

enter image description here

Somit ist die Datei, die ich ausführen wollen, ist check_relations.py innerhalb relations Ordner.

check_relations.py ist wie folgt:

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) 

Das Modell TraxioRelations innerhalb models.py in master Ordnern ist.

Als ich python check_relations.py laufen bekomme ich einen Fehler

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

Was mache ich falsch? Wie kann ich das Modell in die Datei check_relations.py importieren?

+0

@AshishNitinPatil Den gleichen Fehler 'Import: Keine Modul mit dem Namen Modelle ' – Boky

+0

Vorherigen Kommentar ignorieren. Sie führen die Datei extern aus (nicht von django aus), also muss 'traxio' in Ihrem Systempfad sein und Sie sollten stattdessen 'von traxio.master.models import ...' verwenden. –

Antwort

2

Ich denke, die meisten verwendbare Art und Weise es commands

zum Beispiel in Ihrem Stammkatalog erstellen ist:

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) 

! vergessen Sie nicht, den Pfad zur Datei AUTOI_Relaties.csv zu verändern oder zu dem neuen Verzeichnis

setzen und dann können Sie in Shell ausgeführt:

./manage.py check_relations 
Verwandte Themen