返回由相关模型精确引用两次的所有对象

时间:2018-02-06 10:39:00

标签: django django-queryset

我有以下型号:

echo -n "Continue  (y/n)?"
read CONT
if [ "$CONT" = "n" ]
then
  echo "NO"
else
  echo "YES"
fi

我需要选择所有拥有两个地址的人。

所以如果我的地址表看起来像这样:

class Person(...):
    name = CharField(...)

class Address(...):
    person = ForeignKey(Person)
    address = CharField(...)

生成的查询集应为

----------------------------
| id | person_id | address |
----------------------------
| 1  | 1         | xyz     |
| 2  | 1         | xyz     |
| 3  | 2         | xyz     |
| 4  | 3         | xyz     |
| 5  | 3         | xyz     |
| 6  | 4         | xyz     |
| 7  | 5         | xyz     |
| 8  | 5         | xyz     |
| 9  | 5         | xyz     |
----------------------------

我尝试了很多,但似乎没有做对。我很乐意快速解决。

1 个答案:

答案 0 :(得分:1)

尝试使用annotate

from django.db.models import Count
Person.objects.annotate(address_count=Count('address')).filter(
address_count=2)