【发布时间】:2021-10-20 18:10:11
【问题描述】:
我有一个模型作为时间表,其中与同一个用户表有多个 FK 关系。所有这些字段都可以为空/null。
问题是,当我执行 for 循环时,我试图根据用户出现在某个班次上的时间来匹配他们,然后将 +1 添加到计数器以获取该用户的总班次。
模型如下所示:
class WeekdayAssignment(models.Model):
"""Model definition for WeekdayAssignment."""
start_date = models.DateField(auto_now=False, auto_now_add=False)
end_date = models.DateField(auto_now=False, auto_now_add=False)
triage_emea_1 = models.ForeignKey(TeamMember, on_delete=models.DO_NOTHING, related_name="triage_emea_1", blank=True, null=True)
triage_nam_1 = models.ForeignKey(TeamMember, on_delete=models.DO_NOTHING, related_name="triage_nam_1", blank=True, null=True)
triage_nam_2 = models.ForeignKey(TeamMember, on_delete=models.DO_NOTHING, related_name="triage_nam_2", blank=True, null=True)
triage_nam_3 = models.ForeignKey(TeamMember, on_delete=models.DO_NOTHING, related_name="triage_nam_3", blank=True, null=True)
...
如您所见,我有 4 个分诊班次,同一用户可以工作任何班次。
我想做一个 for 循环来计算用户在任何一个字段中轮班的次数。
在不深入了解我正在做的所有细节的情况下,我会保持简单,因为错误会立即发生。
Views.py
def someview(request):
shift_users = TeamMember.objects.all()
weekday_shifts = WeekdayAssignment.objects.all()
for t in shift_users:
for ws in weekday_shifts:
print(ws.triage_nam_3)
只要字段中有值,就会正常打印,但如果字段为空(即没有为该字段选择用户),则会失败并显示TeamMember matching query does not exist.
我尝试检查是否为 None,但它给出了同样的问题。现在,一旦我填充了一个用户,这个错误就会消失,但是我如何检查它是否为空并跳过它?
提前致谢。
【问题讨论】:
标签: python django django-views django-queryset django-orm