1

我有一个页面,其中显示了每个用户的所有锻炼计划。但我只想为每个用户显示一个条目,然后我可以单击并获取该用户的所有锻炼计划。所以,而不是显示:

User 1 - Day 1
USer 1 - Day 2
User 2 - Day 1
USer 2 - Day 2

我想展示:

User 1
User 2

我正在使用以下视图:

planos = Workout.objects.all()

但这会显示一切,所以我尝试了:

plan = Workout.objects.values('member').distinct()

但这会返回{'member': 1}{'member': 2}

如何访问用户的名称?

class Member(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    socio = models.CharField(max_length=6)
    address = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    

class Exercise(models.Model):
    exercise = models.CharField(max_length=166)
    series = models.CharField(max_length=2)
    reps = models.CharField(max_length=2)
    maquina = models.ForeignKey(Maquina)


class Workout(models.Model):
    member = models.ForeignKey(Membro)
    day = models.CharField(max_length=1)
    exercises = models.ManyToManyField(Exercise)
4

1 回答 1

1

您过滤Member模型:

Member.objects.filter(
    workout__isnull=False
).distinct()

这将在Workout模型上进行 LEFT OUTER JOIN,从而Member在(且仅当)至少存在一个相关Workout对象时检索 s。这将防止多次返回.distinct()相同的内容。Member

我们还可以通过以下方式获取该User成员背后的模型:

User.objects.filter(
    member__workout__isnull=False
).distinct()

如果您只是想检索所有成员,则可以使用并渲染这些成员,然后确保可以单击链接以获取该链接的详细信息。Member.objects.all()Member

于 2021-08-25T17:12:11.687 回答