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 道具