简体   繁体   English

django中的自定义用户引发了ValueError

[英]Custom user in django raises ValueError

Even this simple example throws a ValueError: Dependency on app with no migrations: myApp during python manage.py syncdb 即使这个简单的例子也会抛出一个ValueError: Dependency on app with no migrations: myApp python manage.py syncdb期间的ValueError: Dependency on app with no migrations: myApp

myApp/models.py 对myApp / models.py

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

settings.py settings.py

AUTH_USER_MODEL = 'myApp.User'

Running ./manage syncdb in django==1.6.5 << works 在django中运行./manage syncdb == 1.6.5 <<有效

Creating tables ...

Running ./manage syncdb in django==1.7 << breaks 在django中运行./manage syncdb == 1.7 <<中断

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 533, in handle
    return self.handle_noargs(**options)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 27, in handle_noargs
    call_command("migrate", **options)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 115, in call_command
    return klass.execute(*args, **defaults)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 63, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 17, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 48, in __init__
    self.build_graph()
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 239, in build_graph
    parent = self.check_key(parent, key[0])
  File "/Users/bdhammel/Documents/web_development/tutorials/python_social_auth/env/lib/python2.7/site-packages/django/db/migrations/loader.py", line 163, in check_key
    raise ValueError("Dependency on app with no migrations: %s" % key[0])
ValueError: Dependency on app with no migrations: myApp

I haven't been able to find anything in the documentation for 1.7 that says this should be done any differently that 1.6. 我还没有在1.7的文档中找到任何说明这应该以1.6的方式完成的任何内容。 It does look like some other people have had this problem too , but as a result from running ./manage.py migrate --list 它确实看起来像其他人也有这个问题 ,但是因为运行./manage.py migrate --list

Has anyone encountered this? 有没有遇到过这个?

I guess I was looking in the wrong place for an answer: 我想我在错误的地方寻找答案:

I solved this by running: ./manage.py makemigrations myApp 我通过运行: ./manage.py makemigrations myApp解决了这个问题

(env)Bens-MacBook-Pro:social_auth bdhammel$ ./manage.py makemigrations myApp
Migrations for 'myApp':
  0001_initial.py:
    - Create model User
(env)Bens-MacBook-Pro:social_auth bdhammel$ python manage.py syncdb
Operations to perform:
  Apply all migrations: sessions, admin, myApp, auth, default, contenttypes
Running migrations:
  Applying contenttypes.0001_initial... FAKED
  Applying auth.0001_initial... FAKED
  Applying app.0001_initial... FAKED
  Applying admin.0001_initial... FAKED
  Applying default.0001_initial... FAKED
  Applying sessions.0001_initial... FAKED

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes

via https://docs.djangoproject.com/en/1.7/topics/migrations/#s-custom-fields 通过https://docs.djangoproject.com/en/1.7/topics/migrations/#s-custom-fields

EDIT 编辑
I should have used python manage.py migrate instead of python manage.py syncdb . 我应该使用python manage.py migrate而不是python manage.py syncdb

https://docs.djangoproject.com/en/1.8/releases/1.7/#schema-migrations https://docs.djangoproject.com/en/1.8/releases/1.7/#schema-migrations

syncdb has been deprecated and replaced by migrate. syncdb已被弃用,并由migrate替换。 Don't worry - calls to syncdb will still work as before. 别担心 - 对syncdb的调用仍然可以像以前一样工作。

  1. Delete migrations folder in each app 删除每个应用中的迁移文件夹
  2. Drop table django_migrations 删除表django_migrations
  3. Run python3 manage.py makemigrations app1 运行python3 manage.py makemigrations app1
  4. Run python3 manage.py makemigrations app2 运行python3 manage.py makemigrations app2

manage.py runserver should now work like a charm manage.py runserver现在应该像魅力一样工作

This happened to me when I moved an app into a clean new project without deleting the migrations. 当我将应用程序移动到一个干净的新项目而不删除迁移时,这种情况发生在我身上。 If you don't care about the migrations and are starting a project from scratch, consider removing the migrations from those apps. 如果您不关心迁移并从头开始创建项目,请考虑从这些应用程序中删除迁移。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM