[解決済み】Djangoで一対多の関係を表現する方法は?
質問
今、Django のモデルを定義しているところなのですが、そのモデルには
OneToManyField
をモデルフィールドの種類に追加しました。やり方はあると思うので、何が足りないのかよくわからないのですが。私は本質的にこのようなものを持っています。
class Dude(models.Model):
numbers = models.OneToManyField('PhoneNumber')
class PhoneNumber(models.Model):
number = models.CharField()
この場合、各
Dude
は、複数の
PhoneNumber
の関係は一方向でなければなりません。
PhoneNumber
どの
Dude
を所有する多くの異なるオブジェクトを持つかもしれないので、それ自体は、それを所有しています。
PhoneNumber
のインスタンスのように
Business
を例にとると
class Business(models.Model):
numbers = models.OneToManyField('PhoneNumber')
何を置き換えるかというと
OneToManyField
(これは存在しません) を使って、この種のリレーションシップを表現することはできますか? 私はHibernate/JPAから来たのですが、1対多の関係を宣言するのはとても簡単でした。
@OneToMany
private List<PhoneNumber> phoneNumbers;
Djangoでこれを表現するにはどうしたらいいでしょうか?
どのように解決するのですか?
Djangoで一対多のリレーションシップを扱うには
ForeignKey
.
ForeignKeyに関するドキュメントは非常に包括的で、あなたが持つすべての疑問に答えてくれるはずです。
https://docs.djangoproject.com/en/3.2/ref/models/fields/#foreignkey
現在の例の構造では、各Dudeは1つの番号を持ち、各番号は複数のDudeに属することができます(Businessも同じです)。
逆の関係が必要な場合は、PhoneNumberモデルに2つのForeignKeyフィールドを追加し、1つはDudeに、もう1つはBusinessに追加する必要があります。これにより、各番号は1人のDudeまたは1つのBusinessに所属し、DudeとBusinessは複数の番号を所有することができます。これは、あなたが求めているものだと思います。
class Business(models.Model):
...
class Dude(models.Model):
...
class PhoneNumber(models.Model):
dude = models.ForeignKey(Dude)
business = models.ForeignKey(Business)
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Django ランサーバー使用時にデータを印刷する方法
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Djangoで1ページで複数のフォームを扱う適切な方法
-
[解決済み】reverse()とは何ですか?)
-
[解決済み] Django restフレームワーク、同じModelViewSetで異なるシリアライザーを使用する。
-
[解決済み] モデルとリレーションシップフィールドの名前を変更するためのDjangoマイグレーション戦略
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django: 基数が 10 の int() のリテラルが無効です。
-
[解決済み] Django は RuntimeError で動作を停止します: populate() は reentrant ではありません。
-
djangoでログ出力を利用する
-
Djangoデータベースのクエリセット操作
-
django_filters のインポートがうまくいかない、 'django_filter' という名前のモジュールがない
-
Django REST Framework の post_create を使用する際のエラー django.db.utils.IntegrityError.Django.db.utils.IntegrityError.Django.db.utils.IntegrityError: UNIQUE 制約に失敗しました。
-
[解決済み] `SyntaxError: nonlocal 'topics_with_log_tag' のバインディングが見つからない` けど、バインディングはされている
-
[解決済み】Djangoのフォームセットにフォームを動的に追加する
-
[解決済み】Django Southでの後方移行について
-
[解決済み] Django restフレームワーク、同じModelViewSetで異なるシリアライザーを使用する。