問題タブ [multi-table-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
775 参照

python - Django - 複数テーブルの継承 - SubClass との逆の関係

以下の問題を解決していただければ幸いです。私の状況を説明するために、Django ドキュメントのモデルを使用してみましょう。

models.py

queryset.py

上記のように、1 つの基本モデル 'Place' と 2 つのサブモデル 'Restaurant' と 'Pub' があります。ベース モデル 'Place' には 'Owner' オブジェクトへのリンクがあります。クエリセット (PlaceQuerySet、RestaurantQuerySet、PubQuerySet) には、モデル (Place、Restaurant、Pub) と同じ継承階層があります。

私が抱えている課題は、特定の所有者にリンクされた Pub オブジェクトのみを含む PubQuerySet を何らかの形で取得することです....


私が必要とすることを行う 1 つの方法は、所有されている_by(所有者) フィルターを PubQuerySet に追加し、次のように呼び出すことです。

ただし、「.objects」はプリフェッチされた結果を使用せず、常に DB にヒットするため、パフォーマンスの問題があります。


私の考え:

電話すると

それは返す

しかし、どうやって手に入れるのですか

???

django-model-utils(1) の select_subclasses() メソッドを使用すると、クエリセットでオブジェクトをダウンキャストできることがわかっているので、このようなことをすると

Pub クラスのインスタンスで PlaceQuerySet を取得します

それでも、PubQuerySetではなくPlaceQuerySetを受け取ります...

ご助力ありがとうございます

ジャノ

0 投票する
3 に答える
4854 参照

django - djangoに保存した後、オブジェクトのIDはnoneです

オブジェクトのリストをループして保存しています。保存直後に新しく生成された ID またはポインター ID が必要ですが、それは None です。

これが私のコードです:

これにより、ルーチンの実行後にオブジェクトが保存されますが、この行に ID が表示されません。

ここに私のモデルがあります:

カテゴリ リストは次のように作成されました。

私は何を間違っていますか?

0 投票する
2 に答える
127 参照

python - 複数の Django モデルのクエリ

複数のオブジェクトに対してクエリを実行し、関連するオブジェクトの詳細ビューでそれらを一緒に使用する方法についてのアドバイスを探しています。これが私が今取り組んでいるものです:

私が達成しようとしているのは、カテゴリの詳細ビューに SomeObject と SomeOtherObject の両方を一緒に表示することです。これらのモデルにはそれぞれ異なる属性があり、これらのモデルを互いに一意なものにしています。これは、一般的な外部キーが役立つ状況ですか?

できれば、この製品の存続期間中維持することが困難になるハックには近づかないようにしたいと思います。助けてくれてありがとう =)

0 投票する
1 に答える
798 参照

django - 削除時のDjangoマルチテーブル継承「ptr」DO_NOTHING

複数テーブル継承時に自動作成される「_ptr」列にFKオプション(db_constraint、on_deleteなど)を適用する方法はありますか? Django がカスケード削除動作をエミュレートするのを止め、データベースがそれをネイティブに実行するようにしたいと考えています。

0 投票する
2 に答える
1103 参照

python - マルチテーブル継承なしの非抽象モデルからの継承

モデルがそうでない場合、マルチテーブル継承を呼び出さずに (DRY 方式で) すべてのフィールドをコピーするために、既存のモデルから継承する方法はありabstractますか?

明確にするために、私にはモデルがあり、利用可能なフィールドに関して正確に反映するPost別のモデルが必要ですが、複数テーブルの継承や との何らかの関係を持たせたくありません。問題は、抽象モデルではないため、Django が複数テーブルの継承を開始することです。これを回避する方法はありますか?GhostPostPostPostPost

更新: ここで探しているのは、モデルの Python レベルの複製ではなく、それらのフィールドをミラーリングする実際の個別のデータベース テーブルです。

解決策: @Brandon のアドバイスに従い、抽象モデルを使用しました。