#1. models.pyにclassを作る
from django.db import models
class Character(models.Model):
character = models.CharField(max_length=60)
age = models.CharField(max_length=60)
def __str__(self):
return self.character
#2.terminal上でcommandを実行する
(env) qiita mysite % python manage.py makemigrations
Did you rename character.first to character.age (a CharField)? [y/N] y
Did you rename character.last to character.character (a CharField)? [y/N] y
Migrations for 'myapi':
myapi/migrations/0003_auto_*********.py
- Rename field first on character to age
- Rename field last on character to character
(env) qiita mysite % python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, myapi, sessions
Running migrations:
Applying myapi.0003_auto_********... OK
この前に他のfieldを削除していたので、このような内容になっているがpython manage.py makemigrations,python manage.py migrateを実行しokが出れば問題ない。
#3.admin.pyにcharacterの設定
from django.contrib import admin
from .models import Character
admin.site.register(Character)
このcodeを追加したら、python manage.py runserverを行う。
1.2.3の工程を行うことによって,Django rest frameworkにcharacterが追加される。
#4.serializers.pyの作成
class CharacterSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Character
fields = ('id', 'character', 'age')
serializers.pyというfileを新しく用意する。ここでは、fieldsの中にCharacterが持つことができる要素を追加することが出来る。今回はid,character,ageを設定した。なぜserializers.pyを作るのかというと、Django rest frameworkにデータを伝える際にjsonに変換しなければならないからである。
*今回の記事ではjsonには触れないことにする
#5.views.py&urls.pyの設定
from rest_framework import viewsets
from .serializers import CharacterSerializer
from .models import Character
class CharacterViewSet(viewsets.ModelViewSet):
queryset = Character.objects.all().order_by('character')
serializer_class = CharacterSerializer
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapi.urls')),
]
from django.urls import include, path
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register(r'characters', views.CharacterViewSet)
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
views.py urls.pydでの設定を行うことによって画面にデータを表示させることが出来る。
*url.pyは2つあるので注意
*rest_frameworkの設定をしていないなら、あらかじめしておくことをおすすめする
python manage.py runserverを実行
urlにcharactersのurlが設定できていることを確認出来る。
Character listの中にデータが追加されている。このように追加できればmodel作成は完了である。
#まとめ
今回はDjango rest framework へのmodelの追加を行った。model追加の注意点としては、urls.pyが2つあるため混合しないこと、commandの打ち忘れであると思う。またrest_frameworkを設定しなければ動かないので、その点も十分確認が必要である。