1

Я настраиваю новый API с помощью Django REST Framework, и мне нужно добавить токены Auth всем существующим пользователям. Документы говорят:Как использовать инфраструктуру переноса для добавления токенов аутентификации Django REST Framework

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), 
    ]