Как использовать часть URL для фильтрации моделей?(используя вкусный пирог) - PullRequest
0 голосов
/ 01 мая 2019

Здравствуйте, это мой первый пост. У меня есть приложение API с использованием вкусного пирога. Он читает модели из базы данных. Я хотел бы использовать часть api url для фильтрации определенных объектов. Никаких аргументов, только часть URL. Например, в URL: / api / cars /: registration / я хотел бы отфильтровать любой автомобиль с этой регистрацией.

Я потратил бесчисленное количество часов, пытаясь найти все варианты, найденные в Интернете. Мне кажется, что лучшим вариантом будет переопределение get_object_list, но почему-то я не могу заставить его работать.

models.py

class Cars(models.Model):
    car_registration = models.Int()
    signal_time = models.DateTimeField()
    pos_x = models.DecimalField(max_digits=9, decimal_places=6)
    pos_y = models.DecimalField(max_digits=9, decimal_places=6)

urls.py

cars_resource = CarsResource()

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/<int:registration>/', include(cars_resource.urls)),
]

resources.py

class CarsResource(ModelResource):

    def get_object_list(self, request):
        registration = self.kwargs['registration']
        return super(CarsResource, self).get_object_list(request).filter(car_registration=registration)

    class Meta:
        queryset = Cars.objects.all()
        resource_name = 'cars'

В результате я обычно получаю ошибку 404. У меня ощущение, что я делаю что-то не так, но не могу найти это место.

1 Ответ

0 голосов
/ 23 июля 2019

Попробуйте использовать URL-адрес, например /api/cars/?registration=123

...