Я пытаюсь выйти за рамки первоначальных плоских шаблонов URL-адресов Django REST Framework. Например, если у меня есть типы объектов parentobject и childobject, где parentobject HAY childobject (s), то из строки REST выглядит следующим образом.Вложенные шаблоны URL-адресов в Django REST Framework
^ ^api/^^parentobject/$ [name='parentobject-list']
^ ^api/^^parentobject/\.(?P<format>[a-z]+)$ [name='parentobject-list']
^ ^api/^^parentobject/(?P<pk>[^/]+)/$ [name='parentobject-detail']
^ ^api/^^parentobject/(?P<pk>[^/]+)/\.(?P<format>[a-z]+)$ [name='parentobject-detail']
^ ^api/^^childobject/$ [name='childobject-list']
^ ^api/^^childobject/\.(?P<format>[a-z]+)$ [name='childobject-list']
^ ^api/^^childobject/(?P<pk>[^/]+)/$ [name='childobject-detail']
^ ^api/^^childobject/(?P<pk>[^/]+)/\.(?P<format>[a-z]+)$ [name='childobject-detail']
В ответах родительского объекта будут ссылки на идентификаторы childobject (s).
GET /api/parentobject/1/
(results in)
{
"childobject": [123, 456, 789]
}
Если вы хотите подробную информацию о childobject (или все childobjects в БД) вы можете ссылаться на childobject апи.
/api/childobject/
/api/childobject/123/
На этой же странице еще есть? :)
Что я хочу сделать, так это создать общий/расширяемый способ обращения к дочерним m2m-отношениям через родительский объект api без необходимости извлекать идентификаторы, а затем запрашивать дочерний объект api.
/api/parentobject/1/childobject/
[
{
"childobject_prop": 1
...etc
}
]
Таким образом, выше было бы childobject (ы) фильтруются на основе справки parentobject в M2M через стол под управлением Django.
Идея заключалась также в том, что это было бы общим в той мере, в которой я мог бы определить новую взаимосвязь и иметь эту возможность с минимальной работой. например шаблоны url будут автоматически и т. д.
Кроме того, любые нисходящие отношения будут обрабатываться одинаково. Таким образом, «someotherchildobject» ниже вернет список someotherchildobject (s), которые сопоставлены с childobject '123', которые сопоставляются с parentobject '1'.
/api/parentobject/1/childobject/123/someotherchildobject/
Если это не совсем ясно, то дайте мне знать. До сих пор мой успех был ограничен. Я не хочу изменять Django REST для достижения этой цели, и в то же время я не хочу конструировать шаблоны URL вручную, добавляя конкретные, которые меня интересуют в urlpatterns.
Кроме того, в качестве бонуса я хочу, чтобы это применимо к CUSTOM через = tables в Django; и сопоставить любые дополнительные поля в сквозной таблице с полями в возвращаемых данных similar to this.
Спасибо!