Я хотел бы использовать гораздо более сложное свойство source
, чем любые примеры, которые я видел. Как для полей и входов. Вместо того, чтобы отображать простое поле, я хочу выбрать конкретное поле из списка в источнике. Ниже приведено более подробное объяснение, но мне бы хотелось иметь более сложный источник, чем этот:
<TextField source="translations[language = 'en'].title" label="Title" />
У меня есть следующее JSON для моего ввода:
{ "post": {
"id": 1,
"translations": [
{ "language": "en", "title": "English" },
{ "language": "ar", "title": "Arabic" }
]
}
}
Это исходит из источника GraphQL, который не имеет диктов. Вот почему translations
- это список записей. В моем Datagrid я хочу отобразить заголовок Engli sh, если он существует, иначе заголовок Arabi c.
Я могу использовать такие вещи, как:
<Datagrid>
<TextField source="translations[0].title" label="Title" />
</Datagrid>
Однако я бы хотел написать что-то вроде:
<Datagrid>
<TextField source="translations[language = 'en'].title" label="Title" />
</Datagrid>
И, очевидно, более сложный. Я полагаю, мне нужно иметь возможность вызывать свою собственную функцию, чтобы получить именно тот логин c, который я хочу. Возможно ли это и как?
Другое решение состоит в том, чтобы преобразовать производное GraphQL JSON в правильный dict / ha sh, прежде чем реагирует с этим admin-admin, чтобы я мог написать:
<TextField source="translations['en'].title" label="Title" />
Но это означало бы, что я должен сделать это снова на стороне создания / обновления, но это нормально. Не уверен, что это работает, так как я использую ra-data-graphql-simple
.