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.
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.