9

いくつかのフィールドを追加して、django ユーザーを拡張する必要があります。私はそこに2つの異なる方法を見つけました

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #other fields

また

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    #other fields

それらは同じではありませんか?それらを同期した後、mysql データベースに違いは見られませんでした

4

2 に答える 2

6

いいえ、なぜそう思いますか?ForeignKey は 1 対多の関係です。つまり、ユーザーは多くのプロファイルを持つことができます。OneToOne は、名前が示すように、1 対 1 の関係です。ユーザーは 1 つのプロファイルしか持つことができません。

于 2012-05-17T15:04:22.373 に答える
4

@Daniel Rosemanが言ったように、これらは2つの異なるタイプのrdbms関係です。

特定のユーザーに対して複数のプロファイルを (おそらく誤って) 持つ状況で、それが区別されることがわかります。その状況では、基本的に内部でクエリを実行しているmyuser.get_profile()ため、MultipleObjectsReturned例外が発生します。get()

于 2012-05-17T15:16:45.920 に答える