1

我正在使用Django REST框架设置新API,并且需要向所有现有用户添加Auth令牌。该文档说明:您如何使用迁移框架添加Django REST框架身份验证令牌

from django.contrib.auth.models import User 
from rest_framework.authtoken.models import Token 

for user in User.objects.all(): 
    Token.objects.get_or_create(user=user) 

但理想情况下,这应该发生在使用Django的新迁移框架。

有没有简单的方法来做到这一点?

回答

1

首先为您希望使用的应用程序创建一个空迁移。就我而言,我有一个应用程序称为users其中这种东西的生活,所以我跑:

manage.py makemigrations users --empty 

创建我的迁移目录的新文件,我是能够用下面的内容更新:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import models, migrations 
from rest_framework.authtoken.models import Token 
from django.contrib.auth.models import User 

def add_tokens(apps, schema_editor): 
    print "Adding auth tokens for the API..." 
    for user in User.objects.all(): 
     Token.objects.get_or_create(user=user) 

def remove_tokens(apps, schema_editor): 
    print "Deleting all auth tokens for the API..." 
    Token.objects.all().delete() 

class Migration(migrations.Migration): 

    dependencies = [ 
     ('users', '0002_load_initial_data'), 
    ] 

    operations = [ 
     migrations.RunPython(add_tokens, reverse_code=remove_tokens), 
    ] 
相关问题