我有一个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。