3.

DjangoにおけるデータベースのSELECT, INSERT, UPDATE, DELETE

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

前提

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

 

モデルの定義

test_app\models\user.py

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で更新する値を指定する。

 

子ページ
子ページはありません
同階層のページ
  1. MySQL/MariaDBへの接続
  2. sqliteへの接続
  3. SELECT, INSERT, UPDATE, DELETE
  4. 素のSQLを直接実行する方法
  5. Order by DESCの指定方法
  6. limit, offsetの指定方法
  7. filterの検索オプション
  8. django-filterのlookup_expr検索オプション
  9. モデルの内部結合(1対1)

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。