ホームページ > バックエンド開発 > Python チュートリアル > Django モデルの逆関係を「relative_name」でどのように強化するのでしょうか?

Django モデルの逆関係を「relative_name」でどのように強化するのでしょうか?

Mary-Kate Olsen
リリース: 2024-12-16 11:15:14
オリジナル
748 人が閲覧しました

How Does `related_name` Enhance Reverse Relationships in Django Models?

Django モデルの関連名の概要

Django でリレーショナル データベースを操作する場合、relational_name パラメーターは逆関係を確立する際に重要な役割を果たします。 。この記事では、ManyToManyField フィールドとForeignKey フィールドの両方での使用法と重要性について説明します。

関連名との多対多の関係

ManyToManyField の関係では、relation_name は属性名を定義します。関連するモデルの逆関係にアクセスするために使用されます。たとえば、次のコード スニペットでは:

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='maps',
                                     verbose_name=_('members'))
ログイン後にコピー

relation_name='maps' は、User から Map への逆の関係が User.maps としてアクセス可能であることを指定します。 Associated_name を追加すると、デフォルトの Django 生成の逆関係名 (User.map_set) と比較して、構文がより直観的で冗長さが少なくなります。

関連名との外部キー関係

同様に、relation_name は、ForeignKey 関係で使用できます。ただし、この場合は、子モデルの逆関係にアクセスするために使用される属性名を定義します。 Associated_name の指定は必須ではありませんが、読みやすさと使いやすさが向上します。

追加機能

逆リレーションの属性名のカスタマイズに加えて、relation_name には他の重要な機能が用意されています。

  • 逆関係を無効にする: Associated_name を " " に設定すると、逆の関係が明示的に無効になります。
  • クエリ構文のカスタマイズ: カスタム クエリ構文を実現するために、開発者はフィルタ式として関連名を使用できます。たとえば、User(name__in=current_user.maps.all().values_list('name', flat=True)) は、現在のユーザーに関連付けられたマップのメンバーであるすべてのユーザーを取得します。

以上がDjango モデルの逆関係を「relative_name」でどのように強化するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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