Car
モデルと、オブジェクトPassenger
への ForeignKey を持つモデルがありますCar
。Car
とPassenger
モデルの両方にフィーname
ルドがあります。
車または乗客の名前に「バナナ」が含まれているすべての車を取得したいので、次のことを試しました。
from django.db.models import Q
...
name = 'banana'
cars = Car.objects.filter(Q(name__icontains=name) | Q(passenger__name__icontains=name))
不思議なことに、Car
'banana' という名前があり、その中に 3 人の乗客がいて ('banana' に一致するかどうかに関係なく) 何かを呼び出すと、 matching の 3 倍が返されますCar
。
質問は次のとおりです。
なんで?
車を一度だけ返却するには?うまくいくと思います
.distinct()
が、もっと良い方法があるかもしれません。
Django 1.5 を使用しています。