ModelChoiceField:仅获取在另一个对象中用作外键的对象

时间:2012-04-25 13:29:36

标签: django django-queryset

我有两个班级:

class Nationality(Model):
    name = models.Charfield()

class Person(Model):
    name = models.Charfield()
    nationality = ForeignKey("Nationality")

我希望以ModelChoiceField以完全不同的形式显示Person表中用作外键的那些国籍。实际上还有更多,但我只对那些用作现有Person的外键的内容感兴趣。

,因为它返回带有fieldname和引用主键的dict。

Person.objects.values('nationality')

我希望返回Nationality对象,以便我能够引用其name属性。

我不想使用原始SQL,因为我的模型因多语言模块而变得更加复杂。

1 个答案:

答案 0 :(得分:2)

您可以使用注释来过滤那些至少有一个人的国籍。

from django.db.models import Count
Nationality.objects.annotate(person_count=Count('person')).filter(person_count__gte=1)