django - 在哪里放置/如何覆盖 TokenAuthentication 迁移
问题描述
我正在将 TokenAuthentication 添加到我们的 django 项目中,因为我们正在向已经建立的项目中添加一个 api。
在DRF 文档中,我看到:
注意:确保在更改设置后运行 manage.py migrate。rest_framework.authtoken 应用程序提供 Django 数据库迁移。
我还看到要为我需要运行的现有令牌创建令牌:
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
我怎样才能向它添加一个操作(比如这里),这个神奇的迁移来自哪里,我在我的版本控制中看不到它?
解决方案
首先让我说我正在回答我自己的问题,所以我不确定这是解决这个问题的最佳方式,但对我来说这似乎是合乎逻辑的。
我发现我需要的相关迁移位于migrations/0002_auto_20160226_1747.py
authtoken 包中。知道了这个名字,我在我的用户模型中运行了一个迁移(虽然这看起来有点落后)来生成我的令牌。
我的迁移看起来像这样,请注意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),
]
推荐阅读
- python - 训练 LSTM 时跑出 Ram
- python - 如何将runId传递给由lambda的工作流触发的粘合作业?(Python)
- javascript - 将立体声音频文件拆分为每个通道的 AudioNodes
- git - 关于我的 git 日志中显示的内容的问题
- log4j - 使用 log4j 2 时出现 log4j 1 错误
- json - 如何使用 Json 对象中的 Json Transformers 将 JsArray 移动到根?
- android - Android studio 风味维度全部处理,未选择一个
- mongodb - mongo docker镜像的文件权限问题
- string - gnuplot 将变量解释为字符串
- python - 在 pycharm 中运行我的代码时出现“无效的属性名称”错误。我有一个简单的python“main.py”文件和一个kivy“MyQuiz.kv”文件