Django - 访问嵌套相关字段

Django - Access nested Related Field

我有 3 个模型,ProvinceDistrictCommune

模型有这样的字段:

Province hasMany District

District hasMany Commune

我想从 CommuneDistrict 访问 Province 模型。我怎样才能实现它?

我的模型

class Province(models.Model):
    name_eng = models.CharField(max_length=50)
    name_kh = models.CharField(max_length=50)


class District(models.Model):
    province = models.ForeignKey(
        Province, on_delete=models.CASCADE, related_name="district")
    name_eng = models.CharField(max_length=50)
    name_kh = models.CharField(max_length=50)


class Commune(models.Model):
    district = models.ForeignKey(
        District, on_delete=models.CASCADE, related_name="commune")
    name_eng = models.CharField(max_length=50)
    name_kh = models.CharField(max_length=50)

我的模型视图集:

class CommuneFilterSet(filters.FilterSet):
   province = filters.CharFilter(field_name='province__name_kh', lookup_expr='contains')
   district = filters.CharFilter(field_name='district__name_kh', lookup_expr='contains')

   class Meta:
       model = Commune
       fields = ['district', 'province']

class CommuneViewset(viewsets.ModelViewSet):
    queryset = Commune.objects.all()
    serializer_class = CommuneSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_class = CommuneFilterSet
    ordering_fields = '__all__'
    search_fields = [
        'name_kh',
        'name_eng'
    ]

之间,我用django-filter。有什么帮助吗?谢谢

你可以这样试试:

class CommuneFilterSet(filters.FilterSet):
   province = filters.CharFilter(field_name='district__province__name_kh', lookup_expr='contains')
   # rest of the code