5

タイトルで述べたように、Django では:

と の 2 つのフィールドを持つモデル名 QuestionRecord があるfull_scoreとしactual_scoreます。SQLを実現したい:

select * from QuestionRecord as QR where QR.full_score!=QR.actual_score.

生のSQLを使用しても問題ないかもしれませんが、次のように実装したいと思います:

class QuestionRecord_QuerySet(models.query.QuerySet):
    def incorrect(self):# Find out those whose full_score and actual_score are not equal
        return self.filter(...) # **What should I write here??**

class QuestionRecord_Manager(models.Manager):
    def get_query_set(self):
        return QuestionRecord_QuerySet(self.model)

class QuestionRecord(models.Model):
    objects = QuestionRecord_Manager()

それを行う方法はありますか?

4

1 に答える 1

6

確かに、それが" F" オブジェクトの目的です!

from django.db.models import F

# snip

    return self.exclude(full_score = F('actual_score'))

QuerySet.exclude一致する結果を得たくないので、ここで使用します。

本当に使いたい場合はQuerySet.filter、否定されたオブジェクトQself.filter(~Q(full_score = F('actual_score')))使用できます:

于 2013-06-11T09:49:59.037 に答える