Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 Django loaddata唯一约束失败_Python_Json_Unique_Loaddata - Fatal编程技术网

Python Django loaddata唯一约束失败

Python Django loaddata唯一约束失败,python,json,unique,loaddata,Python,Json,Unique,Loaddata,我正在使用空数据库运行python manage.py loaddata'path/to/mydata.json'(User和UserProfile表已创建但未填充),但是,我遇到以下错误: django.db.utils.IntegrityError: Problem installing fixture 'path/to/mydata.json': Could not load myapp.UserProfile(pk=1): UNIQUE constraint failed: myapp_

我正在使用空数据库运行
python manage.py loaddata'path/to/mydata.json'
User
UserProfile
表已创建但未填充),但是,我遇到以下错误:

django.db.utils.IntegrityError: Problem installing fixture 'path/to/mydata.json': Could not load myapp.UserProfile(pk=1): UNIQUE constraint failed: myapp_userprofile.user_id
我检查了(即使在运行了这个命令之后)并且数据库根本没有被填充。那么,它怎么会给出一个pk不是唯一的错误呢

如果相关,
UserProfile
只是按照建议使用
OneToOneField
关系扩展默认的
User
模型

以下是
mydata.json
包含的内容:

[
    {
        "model": "auth.user",
        "pk": 1,
        "fields": {
            "password": "pbkdf2_sha256..",
            "last_login": "2016-10-22T15:19:46.926Z",
            "is_superuser": true,
            "username": "thesuperuser",
            "first_name": "",
            "last_name": "",
            "email": "a@a.co",
            "is_staff": true,
            "is_active": true,
            "date_joined": "2016-10-22T14:48:27.394Z",
            "groups": [],
            "user_permissions": []
        }
    },
    {
        "model": "auth.user",
        "pk": 2,
        "fields": {
            "password": "pbkdf2_sha256..",
            "last_login": null,
            "is_superuser": false,
            "username": "user1",
            "first_name": "User",
            "last_name": "One",
            "email": "",
            "is_staff": false,
            "is_active": true,
            "date_joined": "2016-10-22T15:20:32Z",
            "groups": [],
            "user_permissions": []
        }
    },
    {
        "model": "auth.user",
        "pk": 4,
        "fields": {
            "password": "pbkdf2_sha256..",
            "last_login": null,
            "is_superuser": false,
            "username": "user3",
            "first_name": "User",
            "last_name": "Three",
            "email": "",
            "is_staff": false,
            "is_active": true,
            "date_joined": "2016-10-22T15:21:09Z",
            "groups": [],
            "user_permissions": []
        }
    },
    {
        "model": "auth.user",
        "pk": 3,
        "fields": {
            "password": "pbkdf2_sha256..",
            "last_login": null,
            "is_superuser": false,
            "username": "user2",
            "first_name": "User",
            "last_name": "Two",
            "email": "",
            "is_staff": false,
            "is_active": true,
            "date_joined": "2016-10-22T15:21:03Z",
            "groups": [],
            "user_permissions": []
        }
    },
    {
        "model": "myapp.userprofile",
        "pk": 1,
        "fields": {
            "user": 1,
            "money": 100
        }
    },
    {
        "model": "myapp.userprofile",
        "pk": 2,
        "fields": {
            "user": 2,
            "money": 100
        }
    },
    {
        "model": "myapp.userprofile",
        "pk": 3,
        "fields": {
            "user": 3,
            "money": 100
        }
    },
    {
        "model": "myapp.userprofile",
        "pk": 4,
        "fields": {
            "user": 4,
            "money": 100
        }
    }
]

谢谢你的帮助,

我也遇到了类似的问题。受此帖子启发:

(请参阅“如何修复它”)

在运行loaddata命令之前,我在“saving function”之前对receiver signal decorator进行了注释,它成功了

今天(2020年4月24日)我在《Django 2.2》中遇到了类似的问题

我的fixtures文件如下所示:

[
{
    "model": "contenttypes.contenttype",
    "pk": 1,
    "fields": {
        "app_label": "admin",
        "model": "logentry"
    }
},
{
    "model": "contenttypes.contenttype",
    "pk": 2,
    "fields": {
        "app_label": "auth",
        "model": "permission"
    }
}]
当我运行
/manage.py loaddata initial\u data.json
时,我得到:


django.db.utils.IntegrityError:安装夹具“/home/user/reponame/projectname/initial_data.json”时出现问题:无法加载ContentType.ContentType(pk=2):唯一约束失败:django_content_type.app_标签,django_content_type.model

我所做的只是将
contenttypes.contenttype
模型的
pk
重命名为
id
。之后,迁移工作如预期的那样进行

./manage.py loaddata initial_data.json 
Installed 2 object(s) from 1 fixture(s)
更改后,我的
initial_data.json
文件是:

[
{
    "model": "contenttypes.contenttype",
    "id": 1,
    "fields": {
        "app_label": "admin",
        "model": "logentry"
    }
},
{
    "model": "contenttypes.contenttype",
    "id": 2,
    "fields": {
        "app_label": "auth",
        "model": "permission"
    }
}]

值得一提的是,我原来的initial_dataj.json有许多其他模型,但将pk重命名为id仅用于
contenttypes。contenttype
解决了我的问题。

打开json文件,将每个“pk”更改为“id”
如果使用vs代码,只需选择1并按cmd/ctrl+f2作为快捷键

在导出和导入具有多个关系的模型时遇到相同的问题。这是因为我在导出时手动指定了ManyToMany-through模型,导致了唯一的约束错误

class MyModel(model.Model):
    
    groups = models.ManyToManyField(
        'myapp.mymodel',        
        
    )
您只需要执行
dumpdata myapp.mymodel
,而不需要执行“dumpdata myapp.mymodel myapp.mymodel\u组”

否则,贯穿模型数据将在导出中出现两次,并导致唯一约束错误

class MyModel(model.Model):
    
    groups = models.ManyToManyField(
        'myapp.mymodel',        
        
    )

这是一个很好的问题,当您指定一个显式的直通模型时,它的行为如何……我不知道,也没有时间测试:)

在创建db转储时排除ContentType和Auth权限对象

python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 2 > dump.json
之后,您应该能够运行命令而不会出现任何问题

python manage.py loaddata dump.json
归功于
为了保存我的一天

我无法想象这样一种情况,即在加载db转储时,您希望这些保存后挂钩运行…对我不起作用,因为它会导致内容类型错误谢谢,这对我有效。我以前曾尝试将所有pk更改为id,但这会导致出现
django.contrib.contenttypes.models.DoesNotExist:ContentType mat查询不存在。KeyError:“内容类型”