問題タブ [generic-foreign-key]

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 投票する
1 に答える
254 参照

django - 中間モデルの GenericForeignKeys

「auth.Group」とその他のカスタム モデルの間に中間モデル、Permissions を作成しようとしています。これは、許可またはどのグループに何が表示されるかの手段として機能します。

「auth.Group」と 1 つのモデルの間に中間モデル ExamplePermissions を作成できました。

ただし、問題は、これが再利用性に反することです。カスタム モデルを関連付けることができるモデルを作成するために、次のように、ForeignKey の代わりに GenericForeignKey を実装しました。

移行を試みると、次のエラーが発生します:
core.Permissions: (fields.E336) モデルは 'simulations.Dumby.groups' によって中間モデルとして使用されますが、'Dumby' または ' への外部キーがありません。グループ'。

一見すると、中間テーブルで GenericForeignKey を使用することは行き止まりのように見えます。この場合、カスタム モデルごとにカスタム中間モデルを作成するという面倒で冗長なアプローチ以外に、そのような状況を処理する一般的に受け入れられている方法はありますか?

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

django - Djangoは外部キー関係モデルを動的に選択します

Commentモデルに使用しているモデルがありNewsます:

しかし、今はMaterialsモデルがあり、そこにもコメントを付けたいのですが、同じCommentsモデルを使用します。外部キー関係を動的に選択する方法はありますか ( news = models.ForeignKey(...)->news_or_material = ...またはこのようなもの)。

もちろん、別のモデル ( MaterialComment) を作成することもできますが、コードを再利用したいと考えています。

次に、ビューセットで次のようなことを行う必要があります(私はDjango REST Frameworkを使用しています):

news_pkパラメータを URL からpkofNewsまたはMaterialand にそれぞれ変換する必要がありますnews_or_material = get_object_or_404(...)

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

python - Django 外部キーがどのように機能するかを理解しようとしています

そこで、私は今、最初の Django プロジェクトである 2 人用のチェス Web サイトを構築しています。私はほぼ完了し、今はテストを書いています。このプロジェクトには、Player と Game という 2 つのオリジナル モデルがあります。Player モデルには、User モデルへの 1 対 1 のフィールド Player.user と、プレイヤーが現在参加しているゲーム インスタンスを示す Game への外部キー Player.current_game があります。Game.draw_offered CharField は値 "" を取ります。 (デフォルト値)、「w」または「b」。引き分けが提示されたかどうかと、それを提示したプレーヤーの色を示します。次のことを行うテストケースがあります。

最後のアサーションを除くすべてのアサーションがパスしますが、最後の行から 2 番目の行のコメントを外すと、パスします。

どうしたの?私が理解しているように、外部キー属性 self.player2.current_game を参照すると、Django はデータベース ルックアップを実行し、最新のフィールドを持つ Game インスタンスを返します。self.game と self.player2.current_game はデータベース内の同じゲーム レコードに対応し、self.game.refresh_from_db() が呼び出されたばかりなので、self.game.draw_offered == self.player2.current_game.draw_offered と考えることができます。 True と評価されます。両方の Game インスタンスが同じデータベース レコードを参照し、最新のフィールドを持っています。アサーション パスを作成するために self.player2.current_game.refresh_from_db() を呼び出す必要があるという事実は、私には意味がありません。Django 外部キーに関する私の理解によると、self.player2.current_game は自動的に最新の状態になるはずです。データベースと。

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

django - Django ビューの作成と更新: 外部キー フィールド

次の 2 つのクラスがあるとします。

Django の汎用ビューを使用して、新しいベッドを作成および更新しています。外部キーと同様parcelに、Django はデータベース内の既存のすべての区画を使用して選択入力を自動的に作成します。ただし、特定の garden_id を持つ区画のみを配置するように Django に指示したいと思います。function を見ましたget_initial(self)が、区画の初期値を指定したくありません。区画の選択肢を狭めるだけです。

誰かがアイデアを持っていれば、それは私を大いに助けるでしょう.

ありがとうございました。

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

django - Django GenericForeignKey 参照整合性

私はdjangoプログラミングが初めてで、GenericForeignKeysを理解しようとしています。

データベースに保存する一般的な外部キーを作成できましたが、モデルは参照整合性を強制していないようです。

(つまり、オブジェクト ID が存在しないオブジェクト タイプの ID への参照を作成できます)

(例: content_type: "post", content_id: 123, but post 123 は存在しません)。

(あなたがそれを言う前に-はい-Djangoにはタグ付けのための機能があることを知っています-これは私が汎用外部キーを理解し、それらがどのように機能するかを理解するための非常に簡単な例/テストです。状況)

私の基本的なモデルは次のとおりです。

私のadmin.pyには、次のものがあります。

ただし、管理ページを実行すると、存在しない投稿 ID に対してタグを作成できます。

ここで参照整合性を強制する方法はありますか? どうにかして content_object GenericForeignKey を使用する必要があると思いますが、これを行う方法がわかりませんか?

助けてくれてありがとう、

クリストファー。

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

python - ユーザーフローを追跡するためのデータベース設計

ここに画像の説明を入力 ここに画像の説明を入力

異なるモデル間でユーザー追跡システムを設計したいと考えています。セクションに関連するモジュール テーブルと、サブセクションに関連するセクションがあります。各サブセクションは、異なる独立したテーブルに関連付けることができます。独立したテーブルにはさまざまな項目 (スライド、ビデオ、テキスト) が格納されており、ユーザーは Coursera コースのように直線的な流れで進むことができます。フローは当社が事前に決定しますが、当社が変更することができます。そのため、サブセクション間の直線的なフローはハードコーディングできません。また、これらのサブセクションでユーザーの進行状況を追跡する必要もあります。

例えば:

サブセクションは、user_info、game_score、game_completion_date_time が格納されるゲーム テーブルを指すことができます。または、サブセクションが、slide_text、slide_url、および user_info を格納するスライド テーブルを指す場合もあります。

これらのテーブルの変更を追跡したいので、私のアプローチはどうあるべきですか。以下に、問題に近づいている画像を投稿しました。

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

python - update_or_create の Django GenericRelation

GenericRelationでの使用に問題がありupdate_or_createます。私は次のモデルを持っています:

LockCodeミッションをキーとして作成または更新しようとしています。

そして、私はFieldError: Field 'context' does not generate an automatic reverse relation and therefore cannot be used for reverse querying. If it is a GenericForeignKey, consider adding a GenericRelation.

context_id と context_type を明示的に使用すると機能します。

私の設定に何か問題がありますか?GenericForeignKeyそれともupdate_or_createに使用する唯一の方法 ですか?

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

django - Django GenericForeignKey とともに Model.Meta で CheckConstraint を使用する際のエラー - このクエリでは、結合されたフィールド参照は許可されていません

GFK が少数のモデルのオブジェクトのみを指すように制限しようとしています。これを行うには CheckConstraint が最適な方法だと思いましたが、このエラーが発生します。

移行時に発生するエラー

これを解決する方法の手がかりはありますか?以前に GFK を使用したことがありますが、新しい checkconstraint を使用すると、これを移行することができれば、実際にはエラーセーフな方法になります。

ありがとう

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

python - 汎用外部キーを持つモデルの Django Factory

テスト用に GFK を使用してモデルの Factory を作成しようとしていますが、うまく動作しないようです。ドキュメントの一般的なレシピを参照しましたが、モデルが正確に一致せず、エラーも発生しています。ここに私のモデルがあります

基本的に、は 2 つの のうちのArtwork1 つに配置できますRegionSpaceRegionまたはBeaconRegion。_

Factory対応するモデル用に次の を作成しました

私のテストでは、 を使用してアートワークを作成しようとしましたArtworkFactory()が、次のエラーが発生しました

ここで何が間違っていますか?

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

python - モック Django GenericForeignKey

Django GenericForeignKey 構造を持つモデルの QuerySet をテストしようとしていますが、接続先の複数のモデルをモックしたいと考えています。ただし、Flagモデル (GenericForeignKey を持つモデル) をモック モデルの 1 つを使用して実証しようとすると、TypeError が発生します。 TypeError: Flag() got an unexpected keyword argument 'content_object'

content_object行をコメントアウトして以下のコードを試してみましたが、うまくいきました。ただし、後でテストの一部でその属性が必要になるため、無視することは実行可能な解決策ではありません。

その行を作成関数から移動して、後で設定しようとしましたが、オブジェクトの状態でエラーが発生するようです。

ジャンゴ==3.2.5、パイソン3.9.5