我有一个简单的应用程序,当孩子遇到问题时,会为父母的每个孩子创建当天的日志条目。
因此,例如,Parent包含三个子项。
每次与Child交互时,我都会在Log表中创建一个条目来记录操作。日志按日组织。因此,我可以在周二为三个孩子提供3个条目,在周三给同一个三个孩子提供4个条目。
我想编写一个查询,检查当天日志中是否存在Child。因此,当页面加载或刷新时,我设置一个模板变量,表明它确实存在于日志中。
我一直在想以下查询将理清我需要的内容。但是我很难搞清楚丢失的部分。
型号:
class Child(models.Model):
description = models.TextField()
class Log(models.Model):
child = models.ForeignKey(Child, related_name="child_log")
day = models.DateField(auto_now_add=True, editable=False)
class Parent(models.Model):
parent_children = models.ManyToManyField(Child, blank=True, null=True)
查询集:
today = date.today()
children = Child.objects.filter(parent=parent.id) <= parent.id comes from request kwargs
child_list = Child.objects.filter(id__contains=children.id)
does_exist = Log.objects.filter(child=child_list.id).filter(day=today)
但后来我想在模板中为每个Child添加do_exist状态。这样,如果孩子已经登录,我可以显示不同的状态。
把它想象成一个带有待办事项的待办事项列表,可以在一天内重复完成。如果它在一天内完成,我们需要证明它已经完成。如果没有,那么我们可以证明它没有。
我希望这很清楚。欢迎任何建议。
答案 0 :(得分:0)
嗯......如果我理解正确的话,试试这个
{% for child in childs %}
{% if child.child_log.today.exists %}
#do your staff
...
将经理写入Log:
class LogManager(models.Manager)
def today(self)
return self.get_query_set().filter(day=datetime.datetime.today())
...
class Log(models.Model):
child = models.ForeignKey(Child, related_name="child_log")
day = models.DateField(auto_now_add=True, editable=False)
objects = LogManager()