【发布时间】:2022-01-01 11:14:02
【问题描述】:
我正在编写一个基于 Django 的应用程序来跟踪对象 (Objekt) 及其维护任务。对象可以链接到一个位置。
位置 (0/1) --- (n) 对象 (1) --- (n) 任务
Location、Objekt 和 Task 都有一个具有以下值的状态字段:
RED = "red"
YELLOW = "yellow"
GREEN = "green"
STATUS = [
(RED, "Overdue tasks"),
(YELLOW, "Pending tasks"),
(GREEN, "All good"),
]
我希望位置地图标记根据相关对象和最终任务的状态更改其颜色。
我已经尝试关注django best practices 并创建一个胖模型。
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
但不知何故,我不确定我的概念...... Task 的更新如何触发相关 Objekt 的更新。如果需要,Objekt 将如何进一步触发位置更新?
【问题讨论】: