React 管理员:除了 "id",我可以为 <ReferenceInput> 使用另一个字段吗?
React Admin: Can I use another field for <ReferenceInput>, other than "id"?
有什么方法可以为 ReferenceInput
使用不同的参考字段(id
除外)?
例如:
我有一个 languages
资源,我想使用 language_code
字段填充它。
注意,我不想使用 [=15= 的 id
字段], 我想使用 code
字段。
我已经设法通过使用以下方法让它工作:
<ReferenceInput
label="Language code"
source="language_code"
reference="languages"
>
<SelectInput optionText="name" optionValue="code" />
</ReferenceInput>
唯一的问题是:
从 select 输入 select 语言后,ReferenceInput
尝试使用 code
字段而不是 id
获取资源字段,returns 404 错误。
作为对 languages
的引用存储在资源 中的值必须 是它的标识符。实际上,如果您在资源的显示视图中添加 ReferenceField
,它如何获取没有其 id 的语言?
这里有两个选择:
- 让你的API支持
languages/en
路线
- 将
language_id
除了 language_code
存储在您的资源中,并创建一个自定义 ReferenceInput
,在选择 后将 return 这两个值
Do we know the underlying reason why we use "id" field for the <ReferenceInput>
?
On that note, here's an official explanation from react-admin.
IMO, if we catch that bit from react-admin
then we can (try to) use any other field, maybe !
在您的情况下,获取数据,并将渲染委托给 <SelectInput>
,它将可能的选择作为 choices 属性传递给它。这很好用,因为你可以 select a "language"。
Are you aware that optionValue="id"
is the default?
两种可能的解决方案:
删除optionValue="code"
你能找到一种方法将你的 "code"
映射到 "id"
吗?
请记住,在这种情况下,<SelectInput>
从 <ReferenceInput>
、
choices=[{id='', value=''}, {...}]
填充它的 choices
道具
有什么方法可以为 ReferenceInput
使用不同的参考字段(id
除外)?
例如:
我有一个 languages
资源,我想使用 language_code
字段填充它。
注意,我不想使用 [=15= 的 id
字段], 我想使用 code
字段。
我已经设法通过使用以下方法让它工作:
<ReferenceInput
label="Language code"
source="language_code"
reference="languages"
>
<SelectInput optionText="name" optionValue="code" />
</ReferenceInput>
唯一的问题是:
从 select 输入 select 语言后,ReferenceInput
尝试使用 code
字段而不是 id
获取资源字段,returns 404 错误。
作为对 languages
的引用存储在资源 中的值必须 是它的标识符。实际上,如果您在资源的显示视图中添加 ReferenceField
,它如何获取没有其 id 的语言?
这里有两个选择:
- 让你的API支持
languages/en
路线 - 将
language_id
除了language_code
存储在您的资源中,并创建一个自定义ReferenceInput
,在选择 后将 return 这两个值
Do we know the underlying reason why we use "id" field for the
<ReferenceInput>
?
On that note, here's an official explanation from react-admin.
IMO, if we catch that bit fromreact-admin
then we can (try to) use any other field, maybe !
在您的情况下,获取数据,并将渲染委托给 <SelectInput>
,它将可能的选择作为 choices 属性传递给它。这很好用,因为你可以 select a "language"。
Are you aware that
optionValue="id"
is the default?
两种可能的解决方案:
删除
optionValue="code"
你能找到一种方法将你的
"code"
映射到"id"
吗?
请记住,在这种情况下,<SelectInput>
从<ReferenceInput>
、choices=[{id='', value=''}, {...}]
填充它的
choices
道具