1

小さな Django アプリがあり、django orm で DB にクエリを実行すると、オブジェクト リストが取得されます。私が欲しいのは、クエリが一致した db 列の名前です。可能です?

前もって感謝します!

results = Verbs.objects.filter(
        Q(fps__icontains = " " + word_name + " ") | Q(fps__endswith = " " + word_name) | Q(fps__startswith = word_name + " ") |
        Q(sps__icontains = " " + word_name + " ") | Q(sps__endswith = " " + word_name) | Q(sps__startswith = word_name + " ") |
        Q(tps__icontains = " " + word_name + " ") | Q(tps__endswith = " " + word_name) | Q(tps__startswith = word_name + " ") |
        Q(fpp__icontains = " " + word_name + " ") | Q(fpp__endswith = " " + word_name) | Q(fpp__startswith = word_name + " ") |
        Q(spp__icontains = " " + word_name + " ") | Q(spp__endswith = " " + word_name) | Q(spp__startswith = word_name + " ") |
        Q(tpp__icontains = " " + word_name + " ") | Q(tpp__endswith = " " + word_name) | Q(tpp__startswith = word_name + " ")
        ).all()

私が欲しいのは、クエリが一致したフィールドの名前です。例: fps または fpp ...

4

1 に答える 1

2

これはあなたが望むものだと思います-返された行ごとに、一致したフィールドがインデントされて出力されます。

fields = ('fps', 'sps', 'tps', 'fpp', 'spp', 'tpp')
for r in results.values():
    print 'Row with id=%s:' % r['id']
    for f in fields:
        if word_name in str(r[f]):
            print '  Field %s matches' % f

文字列以外の値を考慮し、目的のフィールドのみを確​​認するように編集されました。

于 2013-10-30T15:46:29.197 に答える