【发布时间】:2019-08-16 13:02:43
【问题描述】:
我设置了一些测试应用来检查 django 的行为。
用于测试的Makefile:
clean:
rm db.sqlite3
mig_model:
python manage.py migrate flights 0001
mig_all:
python manage.py migrate
show1 show2:
python manage.py shell -c "from django.contrib.auth.models import Permission; print(list(Permission.objects.values_list('id', 'codename')))"
all: clean mig_model show1 mig_all show2
- 删除旧数据库
- 迁移到创建第一个自己的模型时
- 迁移后应在 post_migrate 信号中创建默认权限。但我在 Model.Meta 中指定不应创建默认权限
- 检查所有权限 - 我可以看到它们确实是生成的
- 迁移其他所有内容,这只是我删除系统中所有权限的另外 1 次数据迁移
- 再次显示所有权限,我可以看到旧权限已被删除并在迁移后创建了新权限(它们都有新的 id)
models.py:
class Schedule(models.Model):
flight_day = models.DateField()
class Meta:
default_permissions = ()
permissions = ()
make all的输出
.venv ❯ make all
rm db.sqlite3
python manage.py migrate flights 0001
Operations to perform:
Target specific migration: 0001_initial, from flights
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying flights.0001_initial... OK
python manage.py shell -c "from django.contrib.auth.models import Permission; print(list(Permission.objects.values_list('id', 'codename')))"
[(5, 'add_group'), (6, 'change_group'), (7, 'delete_group'), (8, 'view_group'), (1, 'add_permission'), (2, 'change_permission'), (3, 'delete_permission'), (4, 'view_permission'), (9, 'add_user'), (10, 'change_user'), (11, 'delete_user'), (12, 'view_user'), (13, 'add_contenttype'), (14, 'change_contenttype'), (15, 'delete_contenttype'), (16, 'view_contenttype'), (17, 'add_schedule'), (18, 'change_schedule'), (19, 'delete_schedule'), (20, 'view_schedule'), (21, 'add_scheduleperf'), (22, 'change_scheduleperf'), (23, 'delete_scheduleperf'), (24, 'view_scheduleperf')]
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, flights, sessions
Running migrations:
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying flights.0002_delete_perms...DELETE ALL (24, {'auth.Group_permissions': 0, 'auth.User_user_permissions': 0, 'auth.Permission': 24})
OK
Applying sessions.0001_initial... OK
python manage.py shell -c "from django.contrib.auth.models import Permission; print(list(Permission.objects.values_list('id', 'codename')))"
[(25, 'add_logentry'), (26, 'change_logentry'), (27, 'delete_logentry'), (28, 'view_logentry'), (33, 'add_group'), (34, 'change_group'), (35, 'delete_group'), (36, 'view_group'), (29, 'add_permission'), (30, 'change_permission'), (31, 'delete_permission'), (32, 'view_permission'), (37, 'add_user'), (38, 'change_user'), (39, 'delete_user'), (40, 'view_user'), (41, 'add_contenttype'), (42, 'change_contenttype'), (43, 'delete_contenttype'), (44, 'view_contenttype'), (49, 'add_schedule'), (50, 'change_schedule'), (51, 'delete_schedule'), (52, 'view_schedule'), (53, 'add_scheduleperf'), (54, 'change_scheduleperf'), (55, 'delete_scheduleperf'), (56, 'view_scheduleperf'), (45, 'add_session'), (46, 'change_session'), (47, 'delete_session'), (48, 'view_session')]
【问题讨论】:
标签: django