Я пытаюсь использовать django_filters для фильтрации модели по полю.
это модели:
class Provider(models.Model):
name=models.CharField(max_length=100)
lat=models.DecimalField(max_digits=9,decimal_places=6)
lon=models.DecimalField(max_digits=9,decimal_places=6)
address_line1=models.CharField(max_length=255)
address_line2=models.CharField(max_length=255)
user=models.ForeignKey(User,on_delete=models.CASCADE)
class Meta:
db_table='providers'
class Service(models.Model):
name = models.CharField(max_length=50)
provider=models.ForeignKey(Provider,on_delete=models.CASCADE)
class Meta:
db_table='services'
Я использую ModelViewSet
class ServiceList(viewsets.ModelViewSet):
queryset=Service.objects.all()
serializer_class=ServiceSerilaizer
filterset_class=ServiceFilter
и вот мой класс Filter:
from django_filters import rest_framework as filters
class ServiceFilter(filters.FilterSet):
provider=filters.NumberFilter(lookup_expr='iexact')
class Meta:
model=Service
fields=["provider_id"]
Я определил URL-адрес, как этот, в своем urls.py
router_service = routers.DefaultRouter()
router_service.register("services", ServiceList, basename='services')
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^api/', include(router_service.urls)),
path('api/auth/',include('djoser.urls')),
path('api/auth/',include('djoser.urls.authtoken')),
]
Теперь, когда я нажимаю на URL: http://127.0.0.1:8000/api/services/?provider_id=1
Я получаю все услуги, не только те, которые для provider_id = 1. Кто-нибудь может помочь? Я что-то упустил?