很抱歉,如果有人在其他地方提出并回答了这个问题,我已经花了很多时间寻找并找不到答案。
我有两个模型-人模型和地址模型。每个人可以有许多地址。从我的观点来看,我希望能够返回给定组中所有人员的列表,但只返回我标记为主要的地址。 (如果某人没有任何地址,我仍然想退回该人)。
我的两个模型如下(为简单起见,将其简化):
class Person(models.Model):
first = models.CharField(max_length = 30,blank=True,null=True)
last = models.CharField(max_length = 30,null=True)
def __str__(self):
return self.id
class Address(models.Model):
person = models.ForeignKey(Person,related_name = 'addresses',on_delete=models.CASCADE)
address_1 = models.CharField(max_length = 100)
address_2 = models.CharField(max_length = 100,null=True)
primary_address = models.BooleanField(default = False)
def __str__(self):
return self.id
我还有以下序列化器:
class PersonExportSerializer(serializers.ModelSerializer):
addresses = AddressExportSerializer(many=True,required=False)
class Meta:
model = Person
fields = ('id','first','last','addresses')
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.prefetch_related('addresses')
return queryset
class AddressExportSerializer(serializers.ModelSerializer):
class Meta:
model = Address
fields = ('id','address_1','address_2','primary_address' )
在我的视图集中,如何获得一个包含给定人员集合(即queryset = Person.objects.filter(last='Smith').distinct()
但仅包括相关地址where primary_address=True
的查询集?