Django: связанные объекты для аутентифицированного пользователя - PullRequest
0 голосов
/ 16 февраля 2020

В 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 вернет все задачи для всего набора задач, но как я могу получить задачи только для этого пользователя?

1 Ответ

1 голос
/ 16 февраля 2020

Вы можете позвонить .filter() по этому вопросу. Таким образом, весь запрос будет request.user.tasksets.first().tasks.filter(user=request.user). Однако это полезно только в том случае, если вы хотите получить задачу из набора задач first только для пользователя, и эта структура будет продуктивной, только если задачи, определенные в каждом наборе задач, могут принадлежать другим пользователям, кроме владелец набора задач.

Если вы просто хотите получить задачу, принадлежащую этому пользователю, независимо от того, находится она в первом наборе задач или нет, вы можете выполнить request.user.tasks.first().

...