18

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拡張するだけです。UserOneToOneField

内容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
        }
    }
]

助けてくれてありがとう、

4

5 に答える 5

13

データベース ダンプを作成するときに、ContentType および Auth Permissions オブジェクトを除外します。

python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 2 > dump.json

その後、問題なくコマンドを実行できるはずです

python manage.py loaddata dump.json

私の一日を救ってくれたhttps://www.coderedcorp.com/blog/how-to-dump-your-django-database-and-load-it-into-/の功績

于 2020-12-06T16:06:49.063 に答える
7

同様の問題がありました。この投稿に触発されました:

https://github.com/yourlabs/django-cities-light/issues/89 (「修正方法」を参照)

loaddata コマンドを実行する前に、「保存機能」の前にレシーバー シグナル デコレーターにコメントを付けたところ、機能しました。

于 2017-10-30T23:53:10.880 に答える