React Admin-使用id以外的字段作为ReferenceInput

时间:2018-06-25 10:46:47

标签: reactjs admin-on-rest react-admin

是否可以为id使用不同的参考字段(ReferenceInput以外)?例如,我的资源之一有一个language_code字段,我想从languages资源中填充。但是,我不想使用id的{​​{1}}字段,我想使用languages字段。我设法通过使用以下命令使其工作:

code

唯一的问题是,从选择输入中选择一种语言后,<ReferenceInput label="Language code" source="language_code" reference="languages"> <SelectInput optionText="name" optionValue="code" /> </ReferenceInput> 尝试使用ReferenceInput字段而不是code字段来获取资源,返回404。

2 个答案:

答案 0 :(得分:1)

作为对languages的引用存储在资源中的值必须是其标识符。确实,如果您在资源的显示视图中添加ReferenceField,那么如何获取没有ID的语言?

您在这里有两个选择:

  • 使您的API支持languages/en路由
  • 在资源中存储language_idlanguage_code,并创建自定义ReferenceInput,自定义page = requests.get("http://www.ratemyprofessors.com/ShowRatings.jsp?tid=" + str(url_id)) soup = BeautifulSoup(page.content, 'html.parser') raw_quality = soup.find_all(class_= 'breakdown-container quality') print(raw_quality) 将在选择后返回两个值

答案 1 :(得分:0)

我们知道为<ReferenceInput>使用“ id”字段的根本原因吗?

请注意,here's an official explanation from react-admin
IMO,如果我们从react-admin捕获了那一点,那么我们可以(尝试)使用任何其他字段,也许是!

在您的情况下,获取数据,并将渲染向下委托到<SelectInput>,并将可能的选择作为选择属性传递给该对象。由于您可以选择“语言”,因此效果很好。

您是否知道optionValue="id"是默认设置?

两种可能的解决方案:

  • 删除optionValue="code"

  • 您能找到一种将"code"映射到"id"的方法吗?
    在这种情况下,请记住<SelectInput>choices的{​​{1}}道具,
    <ReferenceInput>