2017-07-21 5 views
0

私はDjango 1.9、Python 3.6です。私は、このマイグレーションを行って、それらを逃したユーザーのためにUserProfilesを記入しようとしました。Djangoが移行に失敗しました - "peterson"を照会できません: "User"インスタンスである必要があります

しかし、以下のエラーが表示されます。

"user"変数がUserインスタンスのようです。

from __future__ import unicode_literals 
from django.db import migrations 
from django.contrib.auth.models import User 


def create_missing_profiles(apps, schema_editor): 
    UserProfile = apps.get_model("myapp", "UserProfile") 
    for user in User.objects.all(): 
     UserProfile.objects.get_or_create(user=user) 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('myapp', '0004_auto_20170721_0908'), 
    ] 

    operations = [ 
     migrations.RunPython(create_missing_profiles), 
    ] 

エラー:

ValueErrorを: "はピーターソン" を照会することはできません: "ユーザー" のインスタンスでなければなりません。私はちょうどユーザー私はのUserProfile得たのと同じ方法を取得するために必要なよう

+0

あなたが経由してユーザーを取得する必要があります'get_model'もインポートするのではなく、 –

+0

私はそれについて疑問に思いました。しかし、私はそれを正確にどのように呼びますか?アプリの部分には何が入りますか? (おそらく回答としてそれを提出しますか?) – Greg

+0

'apps.get_model(" auth "、" User ")'。あなたの問題の原因ではないので、答えとして提出しませんでした。後で他の問題を引き起こす可能性があります。 –

答えて

0

はルックス:@Danielローズマンへ

User = apps.get_model("auth", "User") 

感謝を

全作業コード:

from __future__ import unicode_literals 
from django.db import migrations 


def create_missing_profiles(apps, schema_editor): 
    UserProfile = apps.get_model("myapp", "UserProfile") 
    User = apps.get_model("auth", "User") 
    for user in User.objects.all(): 
     UserProfile.objects.get_or_create(user=user) 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('myapp', '0004_auto_20170721_0908'), 
    ] 

    operations = [ 
     migrations.RunPython(create_missing_profiles), 
    ] 
関連する問題