You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ModelAdmin的autocomplete_fields选中项ID(外键)存储位置问询

Django 2.2 autocomplete_fields 选中值存储与获取逻辑解答

核心问题结论

Django创建新对象时,直接从对应外键字段的隐藏Select控件读取选中的外键ID,不需要从展示文本解析。

具体存储逻辑

  • 你观察到的#cashregisterproduct_set-0-id是当前inline条目自身的主键ID,仅编辑已存在的条目时才会有值,新增条目时为空,和你要找的外键ID无关。
  • autocomplete_fields底层基于Select2组件实现,Django会为每个外键字段生成一个隐藏的<select>控件,控件ID格式为id_{inline前缀}-{行号}-{外键字段名},你的场景里对应产品外键的控件ID应为id_cashregisterproduct_set-0-product(假设你的外键字段命名为product,可自行替换为实际字段名)。
  • 选中autocomplete下拉条目后,Select2会自动将选中对象的ID同步为该隐藏select控件的value,原生option不会标记selected属性属于Select2的正常渲染逻辑,不影响实际取值。

取值方式

  • 后端接收表单时会自动读取该控件的value值映射为外键关联,无需额外处理。
  • 前端如需手动获取选中的外键ID,可直接执行JS代码:$('#id_cashregisterproduct_set-0-product').val(),Django admin默认已加载jQuery,可直接使用。

内容的提问来源于stack exchange,提问作者wtdmn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:36:04