Django:经过身份验证的用户的相关对象

Django: Related Objects for Authenticated User

在Django中我们可以创建相关模型:

class User(models.Model):
    pass

class TaskSet(models.Model):
    user = models.ForeignKey(User, related_name='tasksets')
    title = models.Charfield()

class Task(models.Model):
    user = models.ForeignKey(User, related_name='tasks')
    taskset = models.ForeignKey(TaskSet, related_name='tasks')

有道理,我可以调用 request.user.tasksets– 但是获取任务集中任务的正确方法是什么? request.user.tasksets.first().tasks 将 return 整个任务集的所有任务 – 但我怎样才能只获得该用户的任务?

你可以打电话给 .filter()。所以整个查询将是 request.user.tasksets.first().tasks.filter(user=request.user)。但是,这仅在您只想从用户的 first 任务集中获取任务时才有用,并且只有在每个任务集中定义的任务属于任务集所有者以外的其他用户。

如果你只想得到一个属于那个用户的任务,不管它是否在第一个任务集中,你可以request.user.tasks.first()