Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ModelChoiceField:仅获取在另一个对象中用作外键的对象_Django_Django Queryset - Fatal编程技术网

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

Django ModelChoiceField:仅获取在另一个对象中用作外键的对象,django,django-queryset,Django,Django Queryset,我有两门课: class Nationality(Model): name = models.Charfield() class Person(Model): name = models.Charfield() nationality = ForeignKey("Nationality") 我想在modelcooicefield中以完全不同的形式显示Person表中用作外键的国籍。实际上还有很多,但我只对那些用作现有人员的外键的内容感兴趣 这不起作用,因为它返回一个带

我有两门课:

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

class Person(Model):
    name = models.Charfield()
    nationality = ForeignKey("Nationality")
我想在
modelcooicefield
中以完全不同的形式显示
Person
表中用作外键的国籍。实际上还有很多,但我只对那些用作现有
人员的外键的内容感兴趣

这不起作用,因为它返回一个带有字段名和引用主键的dict

Person.objects.values('nationality')
我希望返回
国籍
对象,以便能够引用其
名称
属性


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

您可以使用注释来筛选至少有一个人的国籍

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

成功了!由于什么魔力,我不知道,但它确实起了作用。我的意思是
Count
如何知道
,因为这种关系是基于
?我想我必须读一些关于聚合的文章!非常感谢!!!是的,聚合文档是,但是如果你还不知道的话,一定要仔细阅读。