Как получить несколько ресурсов, используя один URI? - PullRequest
0 голосов
/ 05 ноября 2019

Когда я запускаю эту команду curl: curl http://localhost/refeq/v1/vehiclesequipements/?format=json -s | jq . Я получаю:

{
    "objects":[
    { 
      "vehicle_id": 9759,
      "resource_uri": "/refeq/v1/vehiclesequipements/9759/",
      "noArticle": "",
      "name": "OBCIV_TFT2",
      "mac": "84:7e:40:e9:f2:1e"
    },
    {
      "vehicle_id": 9899,
      "resource_uri": "/refeq/v1/vehiclesequipements/9899/",
      "noArticle": "",
      "name": "FILM_FRONT",
      "mac": "00:40:9d:a2:36:fe"
    },
    {
      "vehicle_id": 9899,
      "resource_uri": "/refeq/v1/vehiclesequipements/9899/",
      "noArticle": "",
      "name": "OBCIV_TFT1",
      "mac": "84:7e:40:ea:a4:36"
    }
  ],
  "meta": {
    "total_count": 3,
    "offset": 0,
    "limit": 0
  }
}

Я хотел бы получить два ресурса о vehicle_id: 9899

, чтобы получить что-то вроде этого:

{
    "objects":[
    {
      "vehicle_id": 9899,
      "resource_uri": "/refeq/v1/vehiclesequipements/9899/",
      "noArticle": "",
      "name": "FILM_FRONT",
      "mac": "00:40:9d:a2:36:fe"
    },
    {
      "vehicle_id": 9899,
      "resource_uri": "/refeq/v1/vehiclesequipements/9899/",
      "noArticle": "",
      "name": "OBCIV_TFT1",
      "mac": "84:7e:40:ea:a4:36"
    }
  ],
  "meta": {
    "total_count": 2,
    "offset": 0,
    "limit": 0
  }
}

проблема, с которой я сталкиваюсь, заключается в том, что curl http://localhost/refeq/v1/vehiclesequipements/9899/?format=json -s возвращает: More than one resource is found at this URI.

Как вернуть несколько ресурсов с ressource_uri?

Я посмотрел на документ, ноЯ не понимаю, как этого добиться ..

Вот мои api.py

from tastypie.resources import ModelResource
from tastypie.serializers import Serializer
from tastypie.authorization import Authorization
from refeq.models import VehiclesEquipements

USE_LOCAL_TIME = True

class MyDateSerializer(Serializer):
    def format_datetime(self, data):
        return data.strftime("%Y-%m-%dT%H:%M:%S")

class VehiclesEquipementsResource(ModelResource):
    class Meta:
        queryset = VehiclesEquipements.objects.all()
        resource_name = 'vehiclesequipements'
        #filtering = {"vehicle_id":["exact","in"]}
        authorization=Authorization()
        limit = 0
        max_limit = 0
        if USE_LOCAL_TIME:
            serializer = MyDateSerializer()

и models.py

class VehiclesEquipements(models.Model):
    vehicle_id = models.IntegerField(primary_key=True)
    noArticle = models.CharField(max_length=30, blank=True)
    name = models.CharField(max_length=30, blank=True)
    mac = models.CharField(max_length=30, blank=True)
    class Meta:
        db_table = 'vw_vehicles_equipements'
        managed = False

Последнее замечание: я не могу использоватьUri filtering:

curl 'http://dope-apipc01/refeq/v1/vehiclesequipements/?format=json&vehicle_id__exact=9899'

Я новичок в Django и вкусный пирог ... Любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 ноября 2019

Похоже, что для доступа к ресурсу он должен иметь уникальный resource_uri, в противном случае возвращается исключение MultipleObjectsReturned.

...