0


0

クエリセットをソートしようとしています

私はこのようなモデルを持っています:

class Kaart(models.Model):
    name = models.CharField(max_length=200, verbose_name="Kaardi peakiri", help_text="Sisesta kaardi pealkiri (maksimum tähemärkide arv on 38)", blank=False, null=False)
    url = models.CharField(max_length=200, blank=False, null=False, verbose_name="Asukoha URL", help_text="Täisasukoht (http://www.domeen.ee/kaart/)")
    kirjeldus = models.TextField(max_length=500, verbose_name="Kommentaar", help_text="Informatsioon / viide tegijale (mitte kohustuslik)")
    date_added = models.DateField(help_text="lisamis kuupäev", verbose_name="Kuupäev", blank=False, null=False, default=datetime.date.today())
    neg = models.PositiveIntegerField(default=0)
    pos = models.PositiveIntegerField(default=0)
    def diff(self):
        return self.pos - self.neg

私の見解-コメントアウトされた部分に注意してください:

def index(request):
    #a = Kaart.objects.all()
    a = Kaart.objects.all().order_by('diff')
    return render_to_response('index.html', {
        'k':a,
    }, context_instance=RequestContext(request))

およびテンプレート:

{% for kaart in k %}

        1

link:#[\ {\ {kaart.name}}] link:%7B%7B%20kaart.url%20%7D%7D [URL]

\ {\ {kaart.shortdate}}

[。pos]#\ {\ {kaart.diff}}#link:#[image:hinda / img / thumbs-up.jpg [image]] link:#[image:hinda / img / thumbs-down .jpg [image]]

\ {%endfor%}

そして、私が得るエラーは次のとおりです:レンダリング中に例外をキャッチしました:キーワード 'diff’をフィールドに解決できません。 選択肢は、date_added、id、kirjeldus、name、neg、pos、urlです。

ハイライトされた行は

\ {%in kaart in k%}

興味深いのは、ATMをコメントアウトした部分にコメントを付け、ソートされたクエリセットをコメントアウトすると、すべてが正常に機能することです。 ここはどうしたの?

このクエリをdiffでソートするにはどうすればよいですか?

アラン

2 Answer


1


あなたはこのようにそれをしなければならないでしょう。

a = Kaart.objects.all().extra(
    select = {'diff': 'pos - neg'}
).order_by('diff')


0


`order_by`引数は、データベースのSQLインタープリターによって解決可能でなければなりません。 `diff`メソッドはPythonにあるため、SQLレベルでは使用できません。 Baresiの答えは良さそうです。