首页 > 解决方案 > Django:获取 QuerySet 中对象的偏移量

问题描述

我有两个模型,一个是问题文本,第二个是用户和问题特定的答案。我一个用户已经回答了很多问题,给定一个问题,我怎样才能找到相应答案的索引?索引表示先前答案的数量/给定答案的位置。

更具体地说,当我查询以下内容时:

from django.db import models
from django.conf import settings

class Question(models.Model):
    body = models.TextField()

class Answer(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
    question = models.ForeignKey(Question, models.CASCADE)
    answer = models.TextField()


def getIndexOfAnswer(user, question):
    answer = user.answer_set.filter(user=user, question=question).all().order_by("pk")
    return answer.???index()???

如何获取给定用户的答案索引(例如,按 PrimaryKey 排序)?

标签: djangodatabasemodeldjango-queryset

解决方案


我有!

def getIndexOfAnswer(user, question):
    answer = user.answer_set.filter(question=question).get()
    return user.answer_set.filter(pk__lte=answer.pk).count() - 1

推荐阅读