放在哪里/如何覆盖令牌身份验证迁移
Where to put/ how to overide TokenAuthentication migrations
我正在将 TokenAuthentication 添加到我们的 django 项目中,因为我们正在将 api 添加到一个已经建立的项目中。
在 DRF docs 我看到了:
Note: Make sure to run manage.py migrate after changing your settings. The rest_framework.authtoken app provides Django database migrations.
我还看到要为现有令牌创建令牌,我需要 运行:
for user in User.objects.all():
Token.objects.get_or_create(user=user)
到目前为止还不错,但对我来说,现有用户的填充令牌需要在迁移中。
我在迁移时看到了迁移:
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
我如何向这个 (like here) 添加操作,这个神奇的迁移来自哪里,我在我的版本控制中看不到它?
首先让我说我是在回答我自己的问题,所以我不确定这是解决这个问题的最佳方法,但对我来说这似乎合乎逻辑。
我发现我需要的相关迁移在 authtoken 包中 migrations/0002_auto_20160226_1747.py
。知道名字后,我 运行 在我的用户模型中迁移(虽然这看起来有点落后)以生成我的令牌。
我的迁移看起来像这样,注意 dependencies
:
from django.db import migrations, models
def create_missing_tokens(apps, schema_editor):
"""
Tokens were added in 0002_auto_20160226_1747, we thus need to populate
the tokens table for existing users
"""
Token = apps.get_model('authtoken', 'Token')
User = apps.get_model('accounts', 'CustomUser')
for user in User.objects.all():
Token.objects.get_or_create(user=user)
class Migration(migrations.Migration):
initial = True
dependencies = [
# depends on authtoken migration
('authtoken', '0002_auto_20160226_1747'),
('accounts', '0003_subscription_max_updates_per_day'),
]
operations = [
migrations.RunPython(create_missing_tokens, reverse_code=migrations.RunPython.noop),
]
我正在将 TokenAuthentication 添加到我们的 django 项目中,因为我们正在将 api 添加到一个已经建立的项目中。
在 DRF docs 我看到了:
Note: Make sure to run manage.py migrate after changing your settings. The rest_framework.authtoken app provides Django database migrations.
我还看到要为现有令牌创建令牌,我需要 运行:
for user in User.objects.all():
Token.objects.get_or_create(user=user)
到目前为止还不错,但对我来说,现有用户的填充令牌需要在迁移中。
我在迁移时看到了迁移:
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
我如何向这个 (like here) 添加操作,这个神奇的迁移来自哪里,我在我的版本控制中看不到它?
首先让我说我是在回答我自己的问题,所以我不确定这是解决这个问题的最佳方法,但对我来说这似乎合乎逻辑。
我发现我需要的相关迁移在 authtoken 包中 migrations/0002_auto_20160226_1747.py
。知道名字后,我 运行 在我的用户模型中迁移(虽然这看起来有点落后)以生成我的令牌。
我的迁移看起来像这样,注意 dependencies
:
from django.db import migrations, models
def create_missing_tokens(apps, schema_editor):
"""
Tokens were added in 0002_auto_20160226_1747, we thus need to populate
the tokens table for existing users
"""
Token = apps.get_model('authtoken', 'Token')
User = apps.get_model('accounts', 'CustomUser')
for user in User.objects.all():
Token.objects.get_or_create(user=user)
class Migration(migrations.Migration):
initial = True
dependencies = [
# depends on authtoken migration
('authtoken', '0002_auto_20160226_1747'),
('accounts', '0003_subscription_max_updates_per_day'),
]
operations = [
migrations.RunPython(create_missing_tokens, reverse_code=migrations.RunPython.noop),
]