Permissions aren't created in time for latter migrations to use them in a single pass
464 просмотра
Перейти к первому непрочитанному сообщению
glenc
не прочитано,
16 мая 2011 г., 17:11:0016.05.2011
Отправить сообщение автору
Чтобы ответить автору, войдите в систему
Переслать
Чтобы переслать сообщение, войдите в систему
Удалить
У вас нет разрешения на удаление сообщений в этой группе.
Копировать ссылку
Пожаловаться
Показать исходное сообщение
Возможно, адреса электронной почты являются анонимными для этой группы или вам требуется разрешение на просмотр адресов электронной почты ее участников, чтобы увидеть исходное сообщение.
– South Users
I'm not 100% sure I'm doing this right, but I think I've found an
issue where auth.Permission objects aren't being created soon enough
for migrations to use them when you initialize a DB from scratch.
The important details:
- I'm trying to initialize a Django DB from scratch using `./manage.py
syncdb --migrate --noinput`
- I have 11 migrations in my chain
- The 1st migration creates a new model called `myapp.CompanyAccount`
- The 9th migration tries to fetch the permission
`myapp.change_companyaccount` with:
`django.contrib.auth.models.DoesNotExist: Permission matching query
does not exist`
I had assumed that the built-in permissions that are created for every
object would have been created by the time the 1st migration finished,
but it doesn't appear that they are. If I re-run the migration after
the exception, it works the second time because apparently the
permission now exists and the 9th migration can execute without error.
Is there anything that can be done to "flush" everything sometime
before the 9th migration runs so that the whole thing can run in a
single pass without bailing out?
Thanks for any help / advice.
Andrew Godwin
не прочитано,
16 мая 2011 г., 18:59:4516.05.2011
Отправить сообщение автору
Чтобы ответить автору, войдите в систему
Переслать
Чтобы переслать сообщение, войдите в систему
Удалить
У вас нет разрешения на удаление сообщений в этой группе.
Копировать ссылку
Пожаловаться
Показать исходное сообщение
Возможно, адреса электронной почты являются анонимными для этой группы или вам требуется разрешение на просмотр адресов электронной почты ее участников, чтобы увидеть исходное сообщение.
– south...@googlegroups.com
So, South runs all the post_syncdb signals (which do this sort of thing) quite late in the process; to trigger them manually, you should call db.send_pending_create_signals() from a migration, which should do the trick.
Andrew
glenc
не прочитано,
17 мая 2011 г., 09:09:3517.05.2011
Отправить сообщение автору
Чтобы ответить автору, войдите в систему
Переслать
Чтобы переслать сообщение, войдите в систему
Удалить
У вас нет разрешения на удаление сообщений в этой группе.
Копировать ссылку
Пожаловаться
Показать исходное сообщение
Возможно, адреса электронной почты являются анонимными для этой группы или вам требуется разрешение на просмотр адресов электронной почты ее участников, чтобы увидеть исходное сообщение.
– South Users
Awesome Andrew, thanks so much for this, it works perfectly now. Also
I posted on SO about this here, so others might find it: