Je suis en train d'écrire un Django en fonction de l'application pour garder une trace de l'objet (Objekt) et de leurs tâches de maintenance. Objekts peut être lié à un lieu.
Emplacement (0/1) --- (n) Objet (1) --- (n) la Tâche
Emplacement, de l'Objet et de la Tâche tous ont un champ d'état avec les valeurs suivantes:
RED = "red"
YELLOW = "yellow"
GREEN = "green"
STATUS = [
(RED, "Overdue tasks"),
(YELLOW, "Pending tasks"),
(GREEN, "All good"),
]
Je veux que la carte de Localisation du marqueur de sa couleur change en fonction de l'état des Objekts et ultimatelly Tâches.
J'ai essayé de suivre django meilleures pratiques et de créer un modèle de graisse.
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
Mais de toute façon je ne suis pas sûr de mon concept ici... Comment une mise à jour sur la Tâche de déclencher une mise à jour sur l'Objet. Et comment serait l'Objet de plus amples déclencher la mise à jour sur l'Emplacement - si nécessaire, à tous?