ホームページ > データベース > mysql チュートリアル > Django で LEFT JOIN を使用して未割り当ての部門を検索する方法

Django で LEFT JOIN を使用して未割り当ての部門を検索する方法

Mary-Kate Olsen
リリース: 2024-12-29 09:30:11
オリジナル
583 人が閲覧しました

How to Find Unassigned Departments in Django Using LEFT JOIN?

Django ORM を使用した未割り当ての部門の検出: LEFT JOIN

Django では、LEFT JOIN 操作をエレガントに実行して特定のデータを取得できます。この手法を使用して、ボランティアが割り当てられていない部門を識別する方法を検討してみましょう。

Django ORM との左結合

次のモデルがあるとします。

class Volunteer(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)    
    email = models.CharField(max_length=50)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)


class Department(models.Model):
    name = models.CharField(max_length=50, unique=True)
    overseer = models.ForeignKey(Volunteer, blank=True, null=True)
    location = models.CharField(max_length=100, null=True)


class DepartmentVolunteer(models.Model):
    volunteer = models.ForeignKey(Volunteer)
    department = models.ForeignKey(Department)
    assistant = models.BooleanField(default=False)
    keyman = models.BooleanField(default=False)
    captain = models.BooleanField(default=False)
    location = models.CharField(max_length=100, blank=True, null=True)
ログイン後にコピー

Django ORM を活用できます。 LEFT JOIN を使用して、関連付けられていない部門を取得しますボランティア:

qs = Department.objects.filter(departmentvolunteer__isnull=True).values_list('name', flat=True)
ログイン後にコピー

クエリの探索

生成されたクエリは次のとおりです:

SELECT "app_department"."name" 
FROM "app_department" LEFT OUTER JOIN "app_departmentvolunteer" 
ON ( "app_department"."id" = "app_departmentvolunteer"."department_id" )
WHERE "app_departmentvolunteer"."id" IS NULL
ログイン後にコピー

このクエリは、DepartmentVolunteer テーブルにエントリが存在しない部門名を取得します。 .

複数の値にわたる関係

Django ORM は、フィルター処理を通じて「複数値の関係のスパニング」のサポートを提供します。これにより、複雑な関係を効率的に走査できます。

このトピックに関するドキュメントは、次の場所にあります。 https://docs.djangoproject.com/en/stable/topics/db/queries/#spanning-multi-valued-relationships

以上がDjango で LEFT JOIN を使用して未割り当ての部門を検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート