如何使用多个外键连接表并在Django中获取过滤后的数据?

2024-09-20 04:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个这样的模型:

class Question(models.Model):
        ques_id = models.IntegerField()
        test_id = models.ForeignKey('exam.Test')
        ques = models.TextField()

class UserAnswer(models.Model):
        user = models.ForeignKey('exam.User')
        test_id = models.ForeignKey('exam.Test')
        ques_id=models.ForeignKey('exam.Question')
        user_ans = models.TextField()

我需要执行这个查询来获得正确的'ques'字段值。在

^{2}$

到目前为止,我所做的:

UserAnswer.objects.filter(test_id=test_id, user_id=user_id).values('ques_id', 'ques_id__ques','user_ans')

但是它没有返回正确的'ques'字段值,因为它没有考虑B.test_id=A.test_id部分。如何找回它???在


Tags: testidmodelmodelsclass段值textfieldquestion
1条回答
网友
1楼 · 发布于 2024-09-20 04:03:53

首先,你的域名有误导性。做_id后缀外键字段!将它们作为属性访问将返回模型实例,django提供_id后缀属性以隐式访问实际密钥:

class Question(models.Model): 
    test = models.ForeignKey('exam.Test')
    ques = models.TextField()
    # is this supposed to be the primary key? Don't do that
    # ques_id = models.IntegerField() 

class UserAnswer(models.Model):
    user = models.ForeignKey('exam.User')
    ques = models.ForeignKey('exam.Question')
    user_ans = models.TextField()
    # This is redundant as ques belongs to a test already
    # test = models.ForeignKey('exam.Test')  

我假设你想得到一个用户和一个测试的所有答案:

^{pr2}$

相关问题 更多 >