Django:ValueError:字段account.UserProfile.user:auth.User引用的模型查找失败

时间:2014-05-07 16:40:47

标签: python django

运行python manage.py migrate时出现此错误:

  

ValueError:字段account.UserProfile.user:auth.User

引用的模型查找失败

我做的步骤:

1。创建项目并添加新应用:

$ django-admin.py startproject djdev
$ cd djdev
$ python manage.py startapp account

2。我在INSTALLED_APPS djdev/settings.py... 'django.contrib.staticfiles', 'account', ) ... 添加了新应用:

UserProfile

3。account/models.py中创建了一个新的from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): """ User Profile having one-to-one relations with User """ class Meta: db_table = 'user_profile' ordering = ['id'] user = models.OneToOneField(User, db_column='id_user', related_name='profile') mobile_no = models.CharField('Mobile no.', db_column='contact_no_home', max_length=16, blank=True, null=True) address_line_1 = models.CharField('Address Line 1', db_column='contact_address_line_1_home', max_length=140, blank=True, null=True) address_line_2 = models.CharField('Address Line 2', db_column='contact_address_line_2_home', max_length=140, blank=True, null=True) office_mobile_no = models.CharField('Mobile no.', db_column='contact_no_office', max_length=16, blank=True, null=True) office_address_line_1 = models.CharField('Address Line 1', db_column='contact_address_line_1_office', max_length=140, blank=True, null=True) office_address_line_2 = models.CharField('Address Line 2', db_column='contact_address_line_2_office', max_length=140, blank=True, null=True) about = models.TextField('About me', blank=True, null=True) note = models.CharField('Note', max_length=255, blank=True, null=True) def __unicode__(self): return self.user.name 模型类:

$ python manage.py makemigrations account
$ python manage.py migrate

4. 开始迁移:

python manage.py migrate

执行完最后一个命令Operations to perform: Synchronize unmigrated apps: (none) Apply all migrations: admin, contenttypes, account, auth, sessions Synchronizing apps without migrations: Creating tables... Installing custom SQL... Installing indexes... Running migrations: Applying account.0001_initial...Traceback (most recent call last): File "./manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/vinay/python_webapps/django-trunk/django/core/management/__init__.py", line 427, in execute_from_command_line utility.execute() File "/home/vinay/python_webapps/django-trunk/django/core/management/__init__.py", line 419, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/vinay/python_webapps/django-trunk/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/vinay/python_webapps/django-trunk/django/core/management/base.py", line 337, in execute output = self.handle(*args, **options) File "/home/vinay/python_webapps/django-trunk/django/core/management/commands/migrate.py", line 146, in handle executor.migrate(targets, plan, fake=options.get("fake", False)) File "/home/vinay/python_webapps/django-trunk/django/db/migrations/executor.py", line 62, in migrate self.apply_migration(migration, fake=fake) File "/home/vinay/python_webapps/django-trunk/django/db/migrations/executor.py", line 90, in apply_migration if self.detect_soft_applied(migration): File "/home/vinay/python_webapps/django-trunk/django/db/migrations/executor.py", line 134, in detect_soft_applied apps = project_state.render() File "/home/vinay/python_webapps/django-trunk/django/db/migrations/state.py", line 83, in render model=lookup_model ValueError: Lookup failed for model referenced by field account.UserProfile.user: auth.User 后,我收到此错误:

{{1}}
  

注意:我正在使用的Django版本: 1.8.dev20140507130401

3 个答案:

答案 0 :(得分:6)

这已在主分支中修复。

已在提交中修复

您可以安装它,直到构建正确的版本:

pip install https://github.com/django/django/zipball/master

<强>测试

models.py

from django.db import models
from django.contrib.auth.models import User

class Test(models.Model):
  user = models.OneToOneField(User)

结果

[__env] $ ./manage.py makemigrations
  Migrations for 'data':
  0001_initial.py:
    - Create model Test
[__env] $ ./manage.py migrate
  Operations to perform:
  Synchronize unmigrated apps: admin, contenttypes, auth, sessions
    (... ommited ...)
  Running migrations:
  Applying data.0001_initial... OK

答案 1 :(得分:3)

我将上面的评论视为建议仅添加依赖项列表(('contenttypes',' __first__'))中的最后一行,但我必须添加最后两行才能解决问题。对于那些对Django中的makemigrations工具有更好理解的人来说,这可能是显而易见的,但我是新手,而不是我。

我上次提交相同错误的上次迁移文件依赖项列表...

dependencies = [
    ('myapp', '0006_auto_20150209_0324'),
    (b'auth', b'__first__'),
    (b'contenttypes', b'__first__'),
]

答案 2 :(得分:2)

我找到了另一种解决方案,也可以正常使用。

请参阅rockallite.wulf的解决方案@ https://code.djangoproject.com/ticket/22488

  

只需在迁移文件中添加相应的依赖项,如下所示:

dependencies = [
        (b'advperm', b'0001_initial'),
        (b'auth', b'__first__'),
        (b'contenttypes', b'__first__'),  # Add this line
]