Am scris un Django pe bază de cerere pentru a urmări obiecte (Objekt) și activitățile de întreținere. Objekts pot fi legate la un loc.
Locație (0/1) --- (n) Objekt (1) --- (n) Sarcină
Locație, Objekt și Sarcina toate au un statut de teren cu următoarele valori:
RED = "red"
YELLOW = "yellow"
GREEN = "green"
STATUS = [
(RED, "Overdue tasks"),
(YELLOW, "Pending tasks"),
(GREEN, "All good"),
]
Vreau ca Locație de hartă cu marcaj își schimbă culoarea în funcție de starea legate Objekts și ultimatelly Sarcini.
Am încercat să urmeze django cele mai bune practici și de a crea un model de grăsime.
from django.db import models
from locationapp.models import Location
from taskapp.models import Task
from rules.contrib.models import RulesModel
class Objekt(RulesModel):
RED = "red"
YELLOW = "yellow"
GREEN = "green"
STATUS = [
(RED, "Overdue tasks"),
(YELLOW, "Pending tasks"),
(GREEN, "All good"),
]
name = models.CharField(max_length=200)
description = models.TextField(blank=True)
location = models.ForeignKey(
Location, on_delete=models.SET_NULL, null=True, blank=True
)
status = models.CharField(max_length=6, choices=STATUS, default=GREEN)
def set_status(self):
if Task.objects.filter(objekt=self.id).filter(status=Task.RED).exists():
self.status = Objekt.RED
elif Task.objects.filter(objekt=self.id).filter(status=Task.YELLOW).exists():
self.status = Objekt.YELLOW
else:
self.status = Objekt.GREEN
Dar cumva eu nu sunt sigur despre conceptul meu aici... Cum poate un update de pe Sarcina de a declanșa o actualizare cu privire la Objekt. Și cum s-ar Objekt continuare declanșa actualizarea pe Locație - dacă este necesar, la toate?