Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何建模外键引用以使用YAML初始化Django模型_Python_Django_Serialization_Yaml - Fatal编程技术网

Python 如何建模外键引用以使用YAML初始化Django模型

Python 如何建模外键引用以使用YAML初始化Django模型,python,django,serialization,yaml,Python,Django,Serialization,Yaml,我正在尝试使用以下yaml代码初始化一些Django模型: - model: app.block &block_1 pk: 1 - model: app.vertex fields: x: 804837.500000 y: 7508312.500000 z: 326.000000 block: *block_1 - model: app.vertex fields: x: 804837.500000 y: 7508312.5

我正在尝试使用以下yaml代码初始化一些Django模型:

- model: app.block &block_1
  pk: 1

- model: app.vertex
  fields:
    x: 804837.500000
    y: 7508312.500000
    z: 326.000000
    block: *block_1

- model: app.vertex
  fields:
    x: 804837.500000
    y: 7508312.500000
    z: 334.000000
    block: *block_1

- model: app.vertex
  fields:
    x: 804837.500000
    y: 7508362.500000
    z: 326.000000
    block: *block_1
但是,当调用“python manage.py loaddata./data.yaml”来填充数据库时,我收到一条错误消息

alizers/pyyaml.py", line 62, in Deserializer
    raise DeserializationError(e)
DeserializationError: found undefined alias 'block_1'
  in "./data/initial.yaml", line 9, column 12
由于某些原因,无法识别锚块_1。有人知道如何正确放置锚吗?yaml格式还有什么问题吗

干杯, 马克斯

更新: 我试图从Django导出数据,以了解语法是如何使用的。我得到了这个结果:

$ python manage.py dumpdata app --format=yaml
- fields: {block: 1, x: 1.0, y: 2.0, z: 3.0}
  model: app.vertex
  pk: 1
- fields: {block: 2, x: 4.0, y: 5.0, z: 6.0}
  model: app.vertex
  pk: 2
- fields: {}
  model: app.block
  pk: 1
- fields: {}
  model: app.block
  pk: 2
- fields: {}
  model: app.block
  pk: 3
这太没用了。导出似乎没有捕获实际存在的引用(通过管理界面检查)

我还尝试了在线解析器。Django在通过解析器时引发异常:

- block:  &block_1
    model:   app.block
    pk: 1


- vertex:
    model:   app.vertex
    fields:
      x:     804837.500000
      y:     7508312.500000
      z:     326.000000
      block: *block_1
引起

File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/management/commands/loaddata.py", line 190, in handle
    for obj in objects:
  File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/serializers/pyyaml.py", line 62, in Deserializer
    raise DeserializationError(e)
DeserializationError: 'model'

是否需要“*block_1”中的星号?注意:我不是YAML专家,我只是查看了中的数据并将其删除-可能它作为参考丢失了?

如果我删除星号,堆栈跟踪是
code
反序列化错误:无效的模型标识符:“app.block&block_1”
code
。在线yaml解析器肯定有区别。同样的代码在web站点上被正确解析,但Django/pyyaml没有解析。我认为如果删除*会发生什么,那就是块_1只是被解释为普通字符串,而不是引用。