以下のような2つのテーブルがあります。
from django.db import models
class AggregationCategories(models.Model):
name = models.CharField(max_length=50)
class Meta:
db_table = "AggregationCategories"
class AggregationFunctions(models.Model):
name = models.CharField(max_length=50)
aggregation_category = models.ManyToManyField(
AggregationCategories,
related_name='aggregationfunctions_aggregationcategories'
)
class Meta:
db_table = "AggregationFunctions"
多対多の関係を作成すると、 の構造を持つ追加のテーブルが得られます<model name>_<filed name>
。したがって、私の例によれば、model name
isAggregationFunctions
とfield name
isaggregation_category
です。それに基づいて、追加のテーブルはAggregationFunctions_aggregation_category
. はい、下の図で 3 つのテーブルすべてを見ることができます。
したがって、次のように 3 番目のテーブルにデータをダンプできますpython manage.py dumpdata <app name>.<third table name>
。だから私のはとapp name
はです。それに基づいて、私のコマンドは、catalogue
third table name
AggregationFunctions_aggregation_category
python manage.py dumpdata catalogue.AggregationFunctions_aggregation_category
例として、 ManyToManyField.through、ManyToManyField.through_fieldsを使用して多対多テーブルを作成した場合 (Django 公式ドキュメントから直接取得)、
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=50)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(
Person,
through='Membership',
through_fields=('group', 'person'),
)
class Membership(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
inviter = models.ForeignKey(
Person,
on_delete=models.CASCADE,
related_name="membership_invites",
)
invite_reason = models.CharField(max_length=64)
これで、多対多の関係のクラス呼び出しMembership
ができたので、以前と同じように使用できます。
python manage.py dumpdata catalogue.Membership