找不到名为"X"的夹具

 手机用户2502929925 发布于 2023-02-08 14:51

我正在使用Django 1.6,我使用South来处理迁移.在我的大多数应用程序中,我曾经有过initial_data.json文件.我将它们转换为加载迁移而不是Django自动加载(因为这在文档中是推荐的)

当我遇到一个奇怪的行为/错误,根据模型代码而不是迁移状态完成加载装置时,我使用的是南方版本0.8.2.我看到最新版本(0.8.4)已经添加了一些相关的bug修复loaddata,所以我升级到它.

现在我在加载夹具的所有迁移中收到以下错误:

UserWarning: No fixture named 'X' found. 

当我使用Django时loaddata它工作正常.关于如何解决这个问题的任何想法?

1 个回答
  • 南和固定装置

    South只是修补syncdb以跳过具有迁移的模型的夹具加载,并且在运行应用程序的最终迁移之后实际加载它们.

    确保您的initial_data文件位于正确的位置

    加载initial_data并不需要你实际做某事,而是按照Django的文档中的说明将灯具放在正确的位置.

    引用文档:

    默认情况下,Django会在每个应用程序内的fixtures目录中查找fixture.您可以将FIXTURE_DIRS设置设置为Django应该看的其他目录列表.

    这意味着如果你有一个名为"myapp"的应用程序,你就会在里面创建一个"fixtures"目录并将json放在那里,例如:myproject/myapp/fixtures.

    Django 1.7和更新

    Django 1.7 引入了内置迁移.它们的界面类似于南方; 用于创建迁移makemigrations,运行它们migrate以及其他的管理命令.

    但是,initial_data在syncdb运行时不再自动加载灯具; 除非它是现有的应用程序,并且没有迁移.发行说明中提到了这一点.

    文档现在建议创建一个datamigration处理夹具加载.幸运的是,这很容易做到,这就是我通常这样做的方式:

    1.创建一个空数据迁移

    $ python manage.py makemigrations --empty myapp
    

    如果您只进行了初始迁移,则最终会得到这些文件(请注意,为了清楚起见,我重命名了迁移0002):

    myapp/
    ??? __init__.py
    ??? fixtures
    ?   ??? my_initial_data.json
    ??? migrations
        ??? 0001_initial.py
        ??? 0002_load_fixture.py
        ??? __init__.py
    

    2.更新0002_load_fixture.py运行loaddata 的代码

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.db import migrations
    from django.core.management import call_command
    
    
    def load_my_initial_data(apps, schema_editor):
        call_command("loaddata", "my_initial_data.json")
    
    
    class Migration(migrations.Migration):
        dependencies = [
            ('myapp', '0001_initial'),
        ]
    
        operations = [
            migrations.RunPython(load_my_initial_data),
        ]
    

    2023-02-08 14:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有