Django - 访问嵌套相关字段
Django - Access nested Related Field
我有 3 个模型,Province
、District
、Commune
。
模型有这样的字段:
Province hasMany District
District hasMany Commune
我想从 Commune
到 District
访问 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
我有 3 个模型,Province
、District
、Commune
。
模型有这样的字段:
Province hasMany District
District hasMany Commune
我想从 Commune
到 District
访问 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