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), 
    ] 
相關問題