2016-07-08 2 views
-1

Поддерживает ли Django node &anchors and *references в светильниках YAML?Поддерживает ли Django поддержку якорей узлов (&) и ссылок (*) в светильниках YAML?

Пример того, как YAML приспособление с якорем и ссылкой будет выглядеть так:

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

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

Несомненно, это будет зависеть от библиотеки анализа YAML, а не от Django? –

ответ

1

Все зависит от того, как вы правильно определяете, но да, этот код будет загружен, а значением для groups в Python будет список [1]. Есть две вещи, важные вещи, чтобы отметить:

  • Джанго uses PyYAML, который только поддерживает (большинство их) YAML 1,1 стандарт с 2005 года, не самый новый YAML 1,2 стандарт с 2009
  • Для ссылки на примитивных скаляров (как целое число в вашем примере), ссылка в представлении данных в Python будет потеряна. То есть вы закончите с двумя целыми значениями, и изменение одного не изменит другого, и не будет демпинг структуры данных воссоздать привязку/ссылку.
+0

Спасибо за подробную информацию о реализации PyYAML. Их документы довольно грязные, трудно найти какой-либо журнал изменений. Для [моего собственного ответа] (http://stackoverflow.com/a/38264520/247441) мне пришлось вручную протестировать его. – Tony

+0

В моем случае потери ссылок в порядке, они не будут сохранены в Django DB в любом случае. Их единственным моментом является сокращение повторения на стадии генерации YAML. – Tony

0

делегаты Джанго YAML арматура разбор к третьим стороной библиотекам PyYAML, которая делает ссылку поддержки.

Загрузка приспособлений со ссылками, кажется, работает нормально для меня, хотя мой вариант использования очень прост - только значения первичного ключа, помогает избежать повторения при программном создании светильников из шаблонов Jinja2 на основе материалов Ansible.

 Смежные вопросы

  • Нет связанных вопросов^_^