- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功创建了我的第一个 django 项目。
我的项目 foo 和 foobar 中有两个应用程序。
我在每个应用程序文件夹中创建了一个名为“fixtures”的文件夹。我没有在我的settings.yml中指定fixtures目录,所以(according to the docs),django应该在我的{app}/fixtures文件夹中查找。
在 {app}/fixtures 文件夹中,我有几个 YML 文件。我已将各个模块的初始数据拆分为单独的 YML 文件,确保不存在跨文件依赖关系(即所有相关模型都在同一个 YML 文件中,并且祖先出现在使用它们的模型之前的文件中)。
但是,当我在成功创建数据库对象后运行./manage.pysyncdb时,出现以下消息:
未找到灯具
然后我尝试使用 loaddata 命令手动加载灯具:
./manage.py loaddata 0100_foobar.yml
Problem installing fixture '0100_foobar': yml is not a known serialization
上面链接中给出的文档是否错误?或者我是否需要安装模块才能让 django 理解 YML?
顺便说一句,YML 文件解析正确并已检查正确性(我在另一个项目中成功使用了它们) - 所以这不是问题
[编辑]
我已经安装了 PyYaml 并按照 Manoj 的说明重命名了我的装置文件。我可以进一步了解,但我仍然遇到问题(顺便说一句,我正在使用 PyYaml 3.0.9)。
这是我的项目 ORM 中的模型(即 {app}/model.py):
class Currency(models.Model):
short_name = models.CharField(max_length=3, db_index=True, unique=True, null=False) # ISO Code
long_name = models.CharField(max_length=64, db_index=True, unique=True, null=False)
spot_settle = models.IntegerField(null=False, default=0)
rounding = models.IntegerField(null=False, default=2)
这是我正在导入的 YAML 文件:
Currency:
currency_aud : { short_name: AUD , long_name: Australia - Dollars , spot_settle: 0, rounding: 2 }
currency_cad : { short_name: CAD , long_name: Canada - Dollars , spot_settle: 0, rounding: 2 }
currency_eur : { short_name: EUR , long_name: Euro Member Countries - Euro , spot_settle: 0, rounding: 2 }
currency_gbp : { short_name: GBP , long_name: United Kingdom - Pounds , spot_settle: 0, rounding: 2 }
currency_jpy : { short_name: JPY , long_name: Japan - Yen , spot_settle: 0, rounding: 2 }
currency_usd : { short_name: USD , long_name: United States Of America - Dollars , spot_settle: 0, rounding: 2 }
currency_zar : { short_name: ZAR , long_name: South Africa - Rand, spot_settle: 0, rounding: 2 }
currency_hkd : { short_name: HKD , long_name: Hong Kong Dollar, spot_settle: 0, rounding: 2 }
currency_nzd : { short_name: NZD , long_name: New Zealand Dollar, spot_settle: 0, rounding: 2 }
currency_sgd : { short_name: SGD , long_name: Singapore Dollar, spot_settle: 0, rounding: 2 }
currency_dkk : { short_name: DKK , long_name: Danish Krone, spot_settle: 0, rounding: 2 }
currency_sek : { short_name: SEK , long_name: Swedish Krona, spot_settle: 0, rounding: 2 }
currency_chf : { short_name: CHF , long_name: Swiss Franc, spot_settle: 0, rounding: 2 }
这是我运行 ./manage.py loaddata myapp/fixtures/currencies.yaml 时的堆栈跟踪
me@somebox:~/work/demo/myproj$ ./manage.py loaddata reference/fixtures/0100_currency.yaml
Installing yaml fixture 'reference/fixtures/0100_currency' from absolute path.
Problem installing fixture 'reference/fixtures/0100_currency.yaml': Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/loaddata.py", line 165, in handle
for obj in objects:
File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/pyyaml.py", line 57, in Deserializer
for obj in PythonDeserializer(yaml.load(stream), **options):
File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/python.py", line 84, in Deserializer
Model = _get_model(d["model"])
TypeError: string indices must be integers, not str
最佳答案
我尝试在我的一个项目中重现您的问题。显然loaddata
期望文件的扩展名与序列化格式匹配。在您的情况下,您应该将文件重命名为 0100_foobar.yaml
(注意新的扩展名)。
本地测试表明我的假设是正确的。
PS:YAML 序列化需要 PyYAML
图书馆。如果尚未安装,请安装 PyYAML 。
更新
我将 OP 的模型复制到我的一个项目中。当我尝试按原样加载 OP 给出的示例 YAML 时,我得到了相同错误。
之后,我使用管理应用程序添加了一些数据并使用 django.core.serializers.serialize
以 YAML 格式转储数据。
from django.core.serializers import serialize
from app.models import Currency
print serializers.serialize("yaml", Currency.objects.all())
我得到的结果看起来与OP发布的结果有很大不同。见下文。我为模型添加了三个实例,它们正在显示。
- fields: {long_name: Australia - Dollars, rounding: 2, short_name: AUD, spot_settle: 0}
model: app.currency
pk: 1
- fields: {long_name: Canada - Dollars, rounding: 2, short_name: CAD, spot_settle: 0}
model: app.currency
pk: 2
- fields: {long_name: Euro Member Countries - Euro, rounding: 2, short_name: EUR,
spot_settle: 0}
model: app.currency
pk: 3
我能够毫无问题地加载这些数据。
鉴于上述情况,我怀疑OP的YAML文件有问题。 @skyeagle,您可以尝试转储现有数据,然后尝试加载转储吗?
关于django - django 理解 YML 吗? django 未加载固定装置 YML 文件(yml 不是已知的序列化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880931/
我已经成功创建了我的第一个 django 项目。 我的项目 foo 和 foobar 中有两个应用程序。 我在每个应用程序文件夹中创建了一个名为“fixtures”的文件夹。我没有在我的setting
我遵循了 cap + nginx + unicorn 上的文档,但在理解如何正确进行数据库部署时遇到了一些问题。 /config/database.yml 不应该在 git repo 中(最好) 在/
GitLab server can't start .原因很可能是 gitlab.yml 配置文件不正确。 用什么工具检查yml语法是否正确? 我试过 Notepad++ 和 SublimeText,
我们有一个站点范围的 config.yml 文件,它联系 api key 等... 我的另一个 YML 文件能否访问 config.yml 中的值? 配置文件: development: th
我正在尝试在我的第一个测试应用程序中设置用户和安全管理,但我已经有点迷失了,不知道什么是做什么的。 到目前为止我的设置:Symfony 2.5、SonataUserBundle(以及 FOSUserB
我需要在 application.yml 中使用 yaml anchor 引用和字符串连接对于 Spring Boot 应用程序。动机是重用现有配置而不是复制它们。例如,我们有以下 applicati
我需要将单个 YML 文件拆分为多个 YML 文件: 微服务.yml: #------------------------------------------------------------- #
在我的 Symfony2 config.yml 文件中,我想导入一些我希望收集在单独的 yml 文件中的配置。 我用过: imports: - { resource: parameters.yml }
我是新的 docker 用户。在不同的手册中,我通常发现 docker-compose.yml 文件用于描述 docker 作业,但在 docker 站点上为此目标使用了 docker-stack.y
我不明白这两种在 Symfony2 中设置全局常量的方法之间的区别。是否只能在 config.yml (+configuration.php) 中设置默认值和类型? 最佳答案 参数.yml 文件是所有
在 config.yml 中,我看到了 monolog、web_profiler 等根元素。那些服务可以在 service.yml 中配置吗?换句话说,我在 service.yml 中定义的服务是否可
我阅读了这个文档:https://serverless.com/framework/docs/providers/google/guide/services/ users/ serverless.
我正在从事 CI/CD 项目(使用 circleci 管道),目前,我坚持让我的“create_infrastructure”工作正常工作。下面是作业 # AWS infrastructure
编辑:原始标题“文本环境:”平台“sqlite”不支持函数“year”” 将 beberlei\DoctrineExtensions 合并到测试环境中会产生 Uncaught PHP Exceptio
abc.yml: d_lab: 192.168.1.1 d_location: /ephemeral ema: apple: 10.0.0.1 orange: 10.0.0.2
我的 springboot 应用程序有一些 yml 文件(每个文件用于各种配置文件 - dev、prod)来加载配置。我正在将配置移至数据库。 示例配置如下: admin: id: user05
我有一个大型剧本,它使用多个角色来设置新服务器。我想重新使用剧本,但为了退役阶段而不是调用 role_name/tasks/main.yml 并有很多 when: 语句,我想要告诉 Ansible 调
使用 bookdown 创作文档时,我知道有四个选项可以放置配置选项: _bookdown.yml _output.yml 第一个 .Rmd 的 yaml header 文档 传递给 bookdown
我们希望将我们的 azure pipeline build .ymls 模块化。对于完整的应用程序构建,将包括不同组件的构建 .yml 到主 .yml 中,将它们全部构建在一起。对于单独的组件,我们将
假设我的网站上有一个简单的传统联系表单,我希望它在发送电子邮件时在开发环境中使用主题“Test: (subject_field value)”,在生产环境中使用“(subject_field_valu
我是一名优秀的程序员,十分优秀!