この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2019-06-09 23:19:18

タイトル: SELECT, INSERT, UPDATE, DELETE
SEOタイトル: DjangoにおけるデータベースのSELECT, INSERT, UPDATE, DELETE

前提

・データベースの接続設定が済んでいること(まだの方はこちらを参照)

 

モデルの定義

from django.db import models
from datetime import datetime


class User(models.Model):

    user_name = models.CharField(primary_key=True, max_length=100)

    password = models.CharField(max_length=100)

    created_at = models.DateTimeField(default=datetime.now)

    class Meta:
        
        db_table = 'User'

 

SELECT処理

from django.views.generic import TemplateView
from test_app.models.user import User


class RegistView(TemplateView):

    def post(self, request, *args, **kwargs):

        users = User.objects.all().filter(user_name='aaa').order_by('created_at')

        context = {
            'users': users,
        }

        template_name = 'test_app/index.html'

        return render(request, template_name, context)

 

INSERT処理

from django.views.generic import TemplateView
from test_app.models.user import User


class RegistView(TemplateView):

    def post(self, request, *args, **kwargs):

        user_name = request.POST['user_name']
        password = request.POST['password']

        user = User(user_name=user_name, password=password)
        user.save()

        ...

 

UPDATE処理

from django.views.generic import TemplateView
from test_app.models.user import User


class RegistView(TemplateView):

    def post(self, request, *args, **kwargs):

        users = User.objects.all().filter(user_name='aaa').update(user_name='iii')

        ...

SELECTで一度取得してからカラムに値を入れて更新をかける

 

UPDATE or INSERT処理

条件に当てはまるレコードがあればUPDATE, 存在しなければINSERT。

from django.views.generic import TemplateView
from test_app.models.user import User


class RegistView(TemplateView):

    def post(self, request, *args, **kwargs):

        users = User.objects.update_or_create(
                first_name='Tarou2', last_name='Tanaka'2,
                defaults={'first_name': 'Tarou1'},
            )

        ...

defaultsで条件を指定する。