Djangoの同じモデルに対する複数の多対多の関係

ウィルフレッドヒューズ:

2つの多対多の関係を持つ次のモデルがあるとします。

class Child(models.Model):
    name = models.CharField(max_length=80)

class Foo(models.Model):
    bar = models.ManyToManyField(Child)
    baz = models.ManyToManyField(Child)

これはエラーになります:

accounts.foo: Accessor for m2m field 'bar' clashes with related m2m field 'Child.foo_set'. Add a related_name argument to the definition for 'bar'.
accounts.foo: Accessor for m2m field 'baz' clashes with related m2m field 'Child.foo_set'. Add a related_name argument to the definition for 'baz'.

いいよ 後方関係は必要ありません。related_nameのDjangoドキュメント(これは、私の知る限り、ForeignKeyの下のみにあります)によると、設定できrelated_name="+"、後方関係は作成されません。

class Child(models.Model):
    name = models.CharField(max_length=80)

class Foo(models.Model):
    bar = models.ManyToManyField(Child, related_name="+")
    baz = models.ManyToManyField(Child, related_name="+")

ただし、これは機能しません。

accounts.foo: Accessor for m2m field 'bar' clashes with related m2m field 'Child.+'. Add a related_name argument to the definition for 'bar'.
accounts.foo: Reverse query name for m2m field 'bar' clashes with related m2m field 'Child.+'. Add a related_name argument to the definition for 'bar'.
accounts.foo: Accessor for m2m field 'baz' clashes with related m2m field 'Child.+'. Add a related_name argument to the definition for 'baz'.
accounts.foo: Reverse query name for m2m field 'baz' clashes with related m2m field 'Child.+'. Add a related_name argument to the definition for 'baz'.

リバースリレーションを作成しないようにするにはどうすればよいですか?

エミリー:

2つのフィールドに異なるrelated_namesを指定するだけでよいと思います。

class Child(models.Model):
  name = models.CharField(max_length=80)

class Foo(models.Model):
  bar = models.ManyToManyField(Child, related_name="bar")
  baz = models.ManyToManyField(Child, related_name="baz")

関連する名前を付けない場合foo_setChildモデルに同じアクセサー名()を2回作成しようとしています同じ関連名を付けると、同じアクセサーを2回作成しようとするため、一意の関連名を付ける必要があります。上記のコードでモデルを定義し、Childインスタンスを指定する、およびでc関連Fooオブジェクトにアクセスできますc.bar.all()c.baz.all()

後方関係が必要ない場合+は、(一意の)関連する名前のそれぞれにa 追加します

class Foo(models.Model):
  bar = models.ManyToManyField(Child, related_name="bar+")
  baz = models.ManyToManyField(Child, related_name="baz+")

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ2つのモデル間に複数の多対多の関係をどのように作成する必要がありますか?

分類Dev

Djangoの多対多モデル関係の同義語

分類Dev

Laravel、複数のモデルとの多対多の関係

分類Dev

Laravel、複数のモデル間の多対多の関係

分類Dev

Django多対多(m2m)同じモデルとの関係

分類Dev

同じモデルと多対多の関係にある関連ファイルを表示する必要があります。Django RestFrameの作業

分類Dev

Djangoモデルで1対多の関係を追加する

分類Dev

Djangoは多対多の関係をモデル化します

分類Dev

同じエンティティに対する複数の1対多の関係

分類Dev

同じモデルで多対多の関係を使用する正しい方法は何ですか

分類Dev

Djangoで1対多の関係を使用する同じオブジェクト内の複数の値の属性

分類Dev

Laravel 5.2Eloquent-多対多の関係によるモデル

分類Dev

多対多の関係をLaravel-モデルを取得する

分類Dev

多対多が存在するLaravelモデルの関係

分類Dev

多対多の関係-複数のテーブルに行を表示する

分類Dev

Djangoの暗黙の多対多(多対多対多)関係のモデルフィールド

分類Dev

コアデータの複数の対多の関係に関するNSPredicate

分類Dev

Sails.js同じモデル多対多の関連付け

分類Dev

多対多の関係を持つ同じ列の複数のwhere句

分類Dev

既存のモデルとdjangoで多対1の関係を作成する

分類Dev

複数のモデルの多対多の関連付け

分類Dev

親モデルとの多対多の関係に対するFlask-SQLAlchemyフィルター

分類Dev

Django adminの同じモデルに対する複数のModelAdmins /ビュー

分類Dev

DynamoDBで1対1、1対多、および多対多の関係をモデル化する方法

分類Dev

多対多の関係をモデル化するための最良の方法

分類Dev

Django多対多の関係

分類Dev

多対多のJOINに存在する複数の関係のSQLクエリ

分類Dev

同じテーブルで多対多の関係を作成するにはどうすればよいですか(多対多の自己結合)

分類Dev

複数のテーブルにわたる多対多の関係

Related 関連記事

  1. 1

    同じ2つのモデル間に複数の多対多の関係をどのように作成する必要がありますか?

  2. 2

    Djangoの多対多モデル関係の同義語

  3. 3

    Laravel、複数のモデルとの多対多の関係

  4. 4

    Laravel、複数のモデル間の多対多の関係

  5. 5

    Django多対多(m2m)同じモデルとの関係

  6. 6

    同じモデルと多対多の関係にある関連ファイルを表示する必要があります。Django RestFrameの作業

  7. 7

    Djangoモデルで1対多の関係を追加する

  8. 8

    Djangoは多対多の関係をモデル化します

  9. 9

    同じエンティティに対する複数の1対多の関係

  10. 10

    同じモデルで多対多の関係を使用する正しい方法は何ですか

  11. 11

    Djangoで1対多の関係を使用する同じオブジェクト内の複数の値の属性

  12. 12

    Laravel 5.2Eloquent-多対多の関係によるモデル

  13. 13

    多対多の関係をLaravel-モデルを取得する

  14. 14

    多対多が存在するLaravelモデルの関係

  15. 15

    多対多の関係-複数のテーブルに行を表示する

  16. 16

    Djangoの暗黙の多対多(多対多対多)関係のモデルフィールド

  17. 17

    コアデータの複数の対多の関係に関するNSPredicate

  18. 18

    Sails.js同じモデル多対多の関連付け

  19. 19

    多対多の関係を持つ同じ列の複数のwhere句

  20. 20

    既存のモデルとdjangoで多対1の関係を作成する

  21. 21

    複数のモデルの多対多の関連付け

  22. 22

    親モデルとの多対多の関係に対するFlask-SQLAlchemyフィルター

  23. 23

    Django adminの同じモデルに対する複数のModelAdmins /ビュー

  24. 24

    DynamoDBで1対1、1対多、および多対多の関係をモデル化する方法

  25. 25

    多対多の関係をモデル化するための最良の方法

  26. 26

    Django多対多の関係

  27. 27

    多対多のJOINに存在する複数の関係のSQLクエリ

  28. 28

    同じテーブルで多対多の関係を作成するにはどうすればよいですか(多対多の自己結合)

  29. 29

    複数のテーブルにわたる多対多の関係

ホットタグ

アーカイブ