Django 是否充分支持 YAML 固定装置中的节点锚点 (&) 和引用 (*)?

Does Django adequately support node anchors (&) and references (*) in YAML fixtures?

Django 在 YAML 固定装置中支持 node &anchors and *references 吗?

带有锚点和引用的 YAML 夹具的示例:

- model: auth.group
  pk: &somegroup 1
  fields:
    name: "some group"

- model: auth.user
  pk: 1
  fields:
    groups: [*somegroup]
    username: someuser

Django 将 YAML fixture 解析委托给第三方库 PyYAML,它确实支持引用。

虽然我的用例非常简单,但是我的用例非常简单——只是主键值,在基于 Ansible 库存从 Jinja2 模板以编程方式生成夹具时,有助于避免重复。

这完全取决于您如何充分定义,但是是的,此代码将加载并且 Python 中 groups 的值将是列表 [1]。有两件事需要注意:

  • Django uses PyYAML,仅支持(大部分)2005 年的 YAML 1.1 标准,不支持 2009 年的最新 YAML 1.2 标准。
  • 对于原始标量的引用(如您示例中的整数),Python 中数据表示中的引用将丢失。 IE。你最终会得到两个整数值,改变一个不会改变另一个,转储数据结构也不会重新创建 anchor/reference.