[drf | agiliq] Setup, Models and Admin



設定、モデル、および管理者


まず、仮想環境に必要なモジュールをインストールします.
python -m venv venv
pip install django
pip install djangorestframework

プロジェクトの作成


django-admin startproject pollsapi
ディレクトリ構造
manage.py

pollsapi/
    __init__.py
    settings.py
    urls.py
    wsgi.py

データベースの設定

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

データベース構築


python manage.py migrate

モデルの作成


データベースモデルを作成する前にpollsapiアプリケーションを作成します.
python manage.py startapp polls
pollsapi/models.py
from django.db import models
from django.contrib.auth.models import User


class Poll(models.Model):
    question = models.CharField(max_length=100)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)
    pub_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.question


class Choice(models.Model):
    poll = models.ForeignKey(Poll, related_name='choices', on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=100)

    def __str__(self):
        return self.choice_text


class Vote(models.Model):
    choice = models.ForeignKey(Choice, related_name='votes', on_delete=models.CASCADE)
    poll = models.ForeignKey(Poll, on_delete=models.CASCADE)
    voted_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        unique_together = ("poll", "voted_by")

アプリケーションの登録と移行

INSTALLED_APPS = (
...
'rest_framework',
'polls',
)
$ python manage.py makemigrations polls
$ python manage.py migratepollsアプリケーションの空のURL.pyの作成
urlpatterns = [
]
pollsapi/urls.py URLに移動し、下記のように記入します.
from django.urls import include, path

urlpatterns = [
    path('', include('polls.urls')),
]
Server start
python manage.py runserver

Admin page設定

from django.contrib import admin

from .models import Poll, Choice

admin.site.register(Poll)
admin.site.register(Choice)