2017-04-05 76 views
0

我正在創建一個允許用戶回答表單的應用程序。Django/GraphQL三連接表

所以我必須:

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) 

其中Userdjango.contrib.auth.models

我如何可以查詢所有誰回答的具體形式的用戶模式?

回答

0

如何查詢所有已回答特定表單的用戶?

如果你有一個特定的form例如,你可以得到所有的答案,當用戶參與並回答並從獲得所有用戶:

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

如果要格外小心,您可以檢查問題中的表單是否與參與表單中的表單相同:

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

謝謝!你的技術返回一個id列表,然後我使用'users = User.objects.filter(id__in = users_id)' – Pangoraw

+0

是的,因爲它是一個外鍵,它只會返回一個id列表。 – AKS