Django: Wohin mit Model Update Code?
Verfasst: Samstag 25. Februar 2017, 15:17
Hallo Leute,
ich habe eine Frage zum Model Design beim Django Framework.
Worum gehts?
Jedesmal wenn der User einen "Update"-Button klickt, soll eine Routine(1) = scan ablaufen, welche einen Ordner auf einem Netzlaufwerk nach bestimmten Dateien (PDFs) scannt. Das Ergebnis dieser Routine(1) ist eine Liste Tuple-List aus (number, path, creationtime). Diese Routine(1) existiert bereits in einem eigenen Modul. Eine andere Routine(2) soll diese Liste nun mit der Datenbank abgleichen. Wenn der Eintrag schon existiert -> Ignore ansonsten Eintrag ergänzen.
Frage:
Die Frage ist wie oder eher wo genau implementiert man jetzt am besten Routine(2)?
Ich will irgendwie nicht meine ganzen views mit Model-Code vollpumpen. Schreibe ich einfach eine
eigene neue Klasse in models.py (z.B. Utils) rein und hole mir die dann in die views.py oder gibts da einen Django-Way?
Wie ist da die best practice?
models.py
views.py
Btw.
Wie bekommt man hier denn so hübsch formatieren Code mit Highlighting rein?
ich habe eine Frage zum Model Design beim Django Framework.
Worum gehts?
Jedesmal wenn der User einen "Update"-Button klickt, soll eine Routine(1) = scan ablaufen, welche einen Ordner auf einem Netzlaufwerk nach bestimmten Dateien (PDFs) scannt. Das Ergebnis dieser Routine(1) ist eine Liste Tuple-List aus (number, path, creationtime). Diese Routine(1) existiert bereits in einem eigenen Modul. Eine andere Routine(2) soll diese Liste nun mit der Datenbank abgleichen. Wenn der Eintrag schon existiert -> Ignore ansonsten Eintrag ergänzen.
Frage:
Die Frage ist wie oder eher wo genau implementiert man jetzt am besten Routine(2)?
Ich will irgendwie nicht meine ganzen views mit Model-Code vollpumpen. Schreibe ich einfach eine
eigene neue Klasse in models.py (z.B. Utils) rein und hole mir die dann in die views.py oder gibts da einen Django-Way?
Wie ist da die best practice?
models.py
Code: Alles auswählen
class Drawing(models.Model):
number = models.CharField(max_length=11)
path = models.CharField(max_length=256)
creationdate = models.DateTimeField()
# Dateiname ohne Pfad ausgeben lassen
def __str__(self):
return os.path.split(self.path)[1]
#Pseudo Code
class Utils:
def update_db(project):
updates = scan(project)
for update in updates:
check ob update in Drawing.objects.all()
wenn ja: dann ignore,
sonst: rein damit
return success
Code: Alles auswählen
from .models import Utils as ut
def index(request):
project = 'xyz'
if ut.update_db(project):
return HttpResponse("Update done.")
Wie bekommt man hier denn so hübsch formatieren Code mit Highlighting rein?