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列表。