Django过滤后只获取最近的对象

2024-10-02 16:28:24 发布

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

我正在为Django开发一个问卷类型的应用程序。 当他们为每个参与者创建一个完整的问题答案对象时,他们为每个问题对象创建一个答案链接。在

class AnswerSet(models.Model):

    user=models.ForeignKey(User)
    questionnaire=models.ForeignKey(Questionnaire)


class QuestionAnswer(models.Model):    

    question = models.ForeignKey(Question)
    answer = models.CharField(max_length=255)
    answer_set = models.ForeignKey(AnswerSet)

应用程序允许人们重新回答问卷,在这种情况下,使用他们现有的答案呈现表单,对于更新的答案,将创建并保存一个新的QuestionAnswer对象。在

因此,我的问题是:

为了在参与者编辑问卷时显示最新答案,我希望能够获得答案集,然后过滤问题答案,以便为每个问题获得一个问题答案,如果任何问题有多个问题答案,我只希望看到最近的答案


Tags: 对象django答案answer应用程序类型model链接
1条回答
网友
1楼 · 发布于 2024-10-02 16:28:24

多亏了@Rohan的建议和这篇文章Django query select distinct by field pairs我找到了一个对我有用的解决方案,希望其他人也会发现它有用! 我添加了一个新模型:

class LatestQuestionAnswer(models.Model):
    question = models.ForeignKey(Question)
    question_answer = models.ForeignKey(QuestionAnswer)
    answer_set = models.ForeignKey(AnswerSet)
    created = created = models.DateTimeField(auto_now_add=True)

并重写了QuestionAnswerModel上的save函数,使其看起来像:

^{pr2}$

现在,每当我需要得到所有最新问题答案的列表时,我可以这样做:

most_recent_answers = [record.question_answer for record in LatestQuestionAnswer.objects.filter(answer_set=<an_answer_set>)]  

相关问题 更多 >