2

Django REST Framework を使用して新しい API をセットアップしています。既存のすべてのユーザーに認証トークンを追加する必要があります。ドキュメントは次のように言います:

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 の新しい移行フレームワークを使用して行うべきです。

これを行う簡単な方法はありますか?

4

2 に答える 2

2

使用するアプリの空の移行を作成することから始めます。私の場合、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),
    ]
于 2015-09-22T17:52:05.903 に答える