Django/GraphQL三重联接表

Django/GraphQL三重联接表,django,django-models,Django,Django Models,我正在创建一个允许用户回答表单的应用程序 因此,我: class Form(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE) topic = models.CharField(max_length=40) class Question(models.Model): form = models.ForeignKey(Form, on_delete=models.CASCADE)

我正在创建一个允许用户回答表单的应用程序

因此,我:

class Form(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    topic = models.CharField(max_length=40)

class Question(models.Model):
    form = models.ForeignKey(Form, on_delete=models.CASCADE)
    text = models.CharField(max_length=200)
    question_type = models.CharField(max_length=10)

class Participation(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    form = models.ForeignKey(Form, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

class Answer(models.Model):
    participation = models.ForeignKey(Participation)
    question = models.ForeignKey(Question)
    value = models.CharField(max_length=255)
其中,
User
是来自
django.contrib.auth.models

如何查询已回答特定表单的所有用户?

如何查询已回答特定表单的所有用户

如果您有一个特定的
表单
实例,您可以获得用户参与并回答的所有答案,并从中获得所有用户:

users = Answer.objects.filter(participation__form=form).values('participation__user')
如果您想格外小心,您可以检查问题中的表格是否与参与中的表格相同:

users = Answer.objects.filter(participation__form=form,
                  question__form=form).values('participation__user')

谢谢您的技术返回一个id列表,然后我使用
users=User.objects.filter(id\uu in=users\u id)
Yes,因为它是一个外键,所以只返回一个id列表。