我有一个Car模型和一个Passenger带有外键的模型到一个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' 并且其中有三个乘客叫任何东西(匹配或不匹配 'banana')时,它会返回 match 的三倍Car。
问题是:
为什么?
怎样才能只回一次车?我认为这
.distinct()会奏效,但也许有更好的方法。
我正在使用 Django 1.5。