したがって、多くのカテゴリに表示される一連のタスクがあります。
class TaskGroup(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200)
icon = models.CharField(max_length=200, blank=True, null=True)
def __unicode__(self):
return unicode(self.name)
class Task(models.Model):
start_date = models.DateField()
end_date = models.DateField()
is_date_fuzzy = models.BooleanField()
name = models.CharField(max_length=200)
assignee = models.ForeignKey(User, verbose_name="users who is assigned the task", blank=True, null=True)
task_groups = models.ManyToManyField(TaskGroup)
ご覧のとおり、各タスクは複数のタスク グループに表示できます。
クエリで次の条件を満たす必要があります。
- すべての TaskGroup のリストが返されます。
- 特定のグループ内のタスク数のカウント。伊江家具(3)、寝具(2)、フロアランプ(6)
- 特定の TaskGroup にタスクがない場合、そのグループには 0 が必要です
- 各グループ内のタスクは、現在のユーザーによって制限されています。
これまでに思いついた最高のものは、次のようなものです。
TaskGroup.objects.filter(
task__assignee=current_usr
).annotate(
task_count=Count('task__id')
).order_by('name')
しかし、カウントを行う前にすべてをフィルタリングするため、タスクがゼロのタスク グループは表示されません。
多分私は非常に考えているかもしれませんが、私は何年もの間これをやろうとしてきました.この段階では、ループして自分で数えたいと思っています.
私の残り少ない正気を救う手助けができることを本当に願っています!