Как заставить ReferenceManyField соответствовать дочерним элементам из URL-адреса?

Я создаю приложение с помощью response-admin и Spring REST в качестве API данных. Я нахожусь в типичной ситуации, когда у меня есть объект Product с относительными комментариями.

В элементе, показывающем продукт, я добавил ReferenceManyField, чтобы отображать комментарии к этому продукту. Но вот проблема: согласно справочной документации, этот компонент извлекает комментарии, вызывая список комментариев и находя комментарии с идентификатором отца:

https://marmelab.com/react-admin/Fields.html#referencemanyfield

Но поскольку мой Spring REST производит нечто подобное для одного конкретного продукта:

{
  "id" : 1,
  "description" : "Description of Product 1",
  "price" : 50045.0,
  "title" : "Title of product 1",
  "additionaldata" : [ ],
  "pimages" : [ ],
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/products/1"
    },
    "product" : {
      "href" : "http://localhost:8080/products/1"
    },
    "pcomments" : {
      "href" : "http://localhost:8080/products/1/pcomments"
    },
    "vendor" : {
      "href" : "http://localhost:8080/products/1/vendor"
    }
  }
}

Логика обратная, мы находим URI для вызова, чтобы найти список комментариев для этого конкретного продукта.

Как я могу заставить ReferenceManyField вызывать http://localhost:8080/products/1/pcomments для получения комментариев к этому продукту?


person CSoft    schedule 02.08.2018    source источник


Ответы (2)


Попробуйте сделать следующее:

<ReferenceManyField source="your_source" target="_links['pcomments']['href']" reference="products"/>
person asa    schedule 03.08.2018
comment
Благодарю за ваш ответ. Я пробовал это, но, очевидно, это не работает, поскольку в списке комментариев нет родительского идентификатора <ReferenceManyField label="Commenti" reference="pcomments" target="id"> <SingleFieldList> <ChipField source="content" /> </SingleFieldList> </ReferenceManyField> - person CSoft; 03.08.2018

Вы можете обернуть свой поисковый URL-адрес в опоре фильтра ReferenceManyField, а затем в своем dataProvider получите фильтр из GET_MANY_REFERENCE (переключатель case). тогда ты можешь делать все, что хочешь

person sunfly    schedule 27.07.2019