[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
2022-03-19 03:33:47
質問
Djangoとの違いは何ですか?
OneToOneField
と
ForeignKey
?
解決方法は?
との違い
OneToOneField(SomeModel)
と
ForeignKey(SomeModel, unique=True)
で述べたように
Django の決定版
:
OneToOneField
1対1の関係。概念的には、これは
ForeignKey
で
unique=True
しかし、リレーションの "reverse" 側は直接1つのオブジェクトを返します。
とは対照的に
OneToOneField
逆方向の関係は
ForeignKey
"reverse"関係は、以下を返します。
QuerySet
.
使用例
例えば、以下の2つのモデルがあるとします(以下、完全なモデルコード)。
-
Car
モデル使用OneToOneField(Engine)
-
Car2
モデル使用ForeignKey(Engine2, unique=True)
内側から
python manage.py shell
を実行します。
OneToOneField
例
>>> from testapp.models import Car, Engine
>>> c = Car.objects.get(name='Audi')
>>> e = Engine.objects.get(name='Diesel')
>>> e.car
<Car: Audi>
ForeignKey
と
unique=True
例
>>> from testapp.models import Car2, Engine2
>>> c2 = Car2.objects.get(name='Mazda')
>>> e2 = Engine2.objects.get(name='Wankel')
>>> e2.car2_set.all()
[<Car2: Mazda>]
モデルコード
from django.db import models
class Engine(models.Model):
name = models.CharField(max_length=25)
def __unicode__(self):
return self.name
class Car(models.Model):
name = models.CharField(max_length=25)
engine = models.OneToOneField(Engine)
def __unicode__(self):
return self.name
class Engine2(models.Model):
name = models.CharField(max_length=25)
def __unicode__(self):
return self.name
class Car2(models.Model):
name = models.CharField(max_length=25)
engine = models.ForeignKey(Engine2, unique=True, on_delete=models.CASCADE)
def __unicode__(self):
return self.name
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Django - render(), render_to_response() と direct_to_template() の違いは何ですか?
-
ImproperlyConfiguredです。INSTALLED_APPS の設定を要求されたが、設定されていない
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Django ORMのselect_relatedとprefetch_relatedの違いは何ですか?
-
[解決済み] Django REST Framework: ModelSerializerに追加フィールドを追加する
-
[解決済み] models.pyでDjangoの設定変数を参照するには?
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
AttributeError: 'str' オブジェクトには 'decode' という属性がありません。
-
[解決済み] NoReverseMatchエラーとは何ですか、またどのように修正しますか?
-
[解決済み] Django ManyToMany filter()
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
-
[解決済み] Django でモデルのフィールドを取得する
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] Django 1.9 の apps.py の目的は何ですか?
-
[解決済み] django のユニットテストを複数のファイルに分散させるには?
-
[解決済み] Django はフォームが初期化された後にフィールドの値を設定します。