【ご質問】
下記の画像の様な関係性の場合、
質問① 佐藤さんと「佐藤さんの詳細」の関係性は一対一の関係でしょうか?(OneToOne)
質問② 「鈴木さんの詳細」に対して複数のユーザーがいいねをする時の関係性は一対多の関係でしょうか?(ForeignKey)
質問③ メールアドレスを使用して会員登録させるため、カスタムユーザーモデルAbstractBaseUserを使用しているのですが、その際はカスタムユーザーモデル内にユーザーの特技などの詳細フィールドを組み込むのか、それともプロフィールモデルを別途作成してカスタムユーザーモデルに紐付けるのか。どちらがベストプラクティスでしょうか?
一対一や多対一、多対多などのリレーションについて色々調べて見たのですが、私の中で引っかかるところがあってご教示して頂きたく存じます。
上手く伝えられないのですが、プロフィールは記事(ForeignKey)の様にも捉えられるんじゃないか?とも思うんです。
複数のユーザーがプロフィールというオブジェクトに情報を入力していき、そのプロフィールがユーザー分増える様な…普通に考えると上記の図の関係だと思うんですけど明確な答えが分かりませんでした。
記事に対するタグの関係性や、動物園に対する動物、クラブチームに対する選手とかは自分の中で落とし込めました。
【ユーザーとユーザプロフィールをあえて別々にしようと考えた理由】
理由はユーザー登録情報に必要なフィールド以外は別にした方がいいという記事や、実際に別にしてモデルを設計している記事を見かけたり、実際に行ってみて、上手くビューを動かせないなどの理由から、これらは別にした方がいいのかな?と思ったからです。
ただ、現在はカスタムユーザーモデル内に「ユーザーのプロフィール」となる自己紹介やニックネールなどのフィールドを設けております。
標準のユーザーモデルより自由にカスタマイズ出来るカスタムユーザーモデルを推奨している事はドキュメントを読んで理解しております。
ただ、ビューを設計している時に思った様に動かない事が多いので、記事モデルの様にユーザーと紐付けした方(情報がたくさん出てくるため)がベストプラティクスなのかなと思ってどちらがいいのかご教示して頂きたいです。
【環境】
django2.1 or django3.1
python3.7
あなたの回答
tips
プレビュー