9.

【django】モデルの内部結合(1対1)

編集
この記事の要点
  • Django でモデルの内部結合 (INNER JOIN)
  • 1 対 1 / 1 対多: ForeignKey または OneToOneField でリレーション定義
  • 取得: queryset.select_related('related_field') で JOIN クエリ生成
  • N+1 問題回避には select_related(FK)/ prefetch_related(多対多)

 

モデル

from db_itn.models.dept import Dept
from django.db import models

class User(models.Model):

    user_id = models.IntegerField(primary_key=True)

    dept = models.ForeignKey(Dept, on_delete=models.DO_NOTHING)

    class Meta:

        db_table = 'user'
 

 

from django.db import models

class Dept(models.Model):

    dept_id = models.IntegerField(primary_key=True)

    dept_name = models.CharField(max_length=2000)

    class Meta:

        db_table = 'dept'
 

 

ビュー

users = User.objects.filter(user_id=1).select_related('dept')

 

テンプレート

{{ user.user_id }}

{{ user.dept.dept_id}}

上がuserテーブルのカラム。

下がdeptテーブルのカラム。

 

 

編集
Post Share
子ページ

子ページはありません

同階層のページ
  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)

最近更新/作成されたページ