2015-09-30 3 views
0

У меня есть следующие модели:Джанго ManyToMany связь с django.contrib.auth.models.User

class BM(models.Model): 
    created_date = models.DateTimeField(auto_now_add=True, editable=False) 
    birth_date = models.DateTimeField(null=False, blank=False) 
    name = models.CharField(null=False, blank=False, max_length = 255) 
    relations = models.ManyToManyField(User) 

Когда я пытаюсь запустить тест с python manage.py test я получаю следующее сообщение об ошибке:

django.db.utils.ProgrammingError: relation "auth_user" does not exist

Это связано с попыткой создать отношение к таблице пользователя до того, как таблица будет создана сама.

Как это сделать?

Edited сказать:

Это происходит потому, что модель таблицы BM создается перед столом аутентификации пользователя, поэтому следующий оператор выполняется (в соответствии с ./manage sqlall p:

CREATE TABLE "p_baby_relations" (
    "id" serial NOT NULL PRIMARY KEY, 
    "baby_id" integer NOT NULL, 
    "user_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED, 
    UNIQUE ("baby_id", "user_id") 
) 
; 

Ошибка из-за NOT NULL REFERENCES "auth_user", что означает, что таблица польз не была создана

трассировки стека:.

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 330, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/test.py", line 30, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 390, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/test.py", line 74, in execute 
    super(Command, self).execute(*args, **options) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 441, in execute 
    output = self.handle(*args, **options) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/test.py", line 90, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/usr/local/lib/python2.7/dist-packages/django/test/runner.py", line 210, in run_tests 
    old_config = self.setup_databases() 
    File "/usr/local/lib/python2.7/dist-packages/django/test/runner.py", line 166, in setup_databases 
    **kwargs 
    File "/usr/local/lib/python2.7/dist-packages/django/test/runner.py", line 370, in setup_databases 
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True), 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/creation.py", line 368, in create_test_db 
    test_flush=not keepdb, 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 120, in call_command 
    return command.execute(*args, **defaults) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 441, in execute 
    output = self.handle(*args, **options) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 179, in handle 
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 317, in sync_apps 
    cursor.execute(statement) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 97, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 62, in execute 
    return self.cursor.execute(sql) 
django.db.utils.ProgrammingError: relation "auth_user" does not exist 
+0

Вы запустили makemigrations и мигрировали? – dietbacon

+0

попробуйте запустить manage.py makemigrations 'app_name' этого класса BM –

+0

Я запускаю тестовый набор – mikeb

ответ

-1

Эта ошибка говорит ваша база данных не имеет таблицу auth_user

django.db.utils.ProgrammingError: relation "auth_user" does not exist

Databasetables в Джанго будут создавать с manage.py syncdb

+0

Я запускаю набор тестов. – mikeb

0

Вы должны указать auth.User как зависимость в процессе миграции.

class Migration(migrations.Migration): 
    dependencies = [ 
     ('user', '0001_initial'), 
    ] 
+0

Это то, что я искал, но он не работает с первой попытки. У меня есть это 'зависимостей = [ migrations.swappable_dependency (settings.AUTH_USER_MODEL), ('р', '0001_initial'), ('пользователь', '0001_initial'), ]' для миграции и получить ошибку : 'django.db.migrations.graph.NodeNotFoundError: Migration p,0002_baby_relations ссылка ссылки несуществующий родительский узел (u'user ', u'0001_initial')' Я думаю, что это на правильном пути, хотя мне просто нужно выяснить правильная идиома. – mikeb

Смежные вопросы