問題タブ [generic-relations]
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.
python - モデル クラス Django を別のモデルのインスタンスに関連付ける
@Todor のコメントに応じて大幅に編集。
[Django 1.7.6 と Python 3.4.1 を使用しています。]
—</p>
そのため、私の Django プロジェクトではItem
、さまざまな特定のサブクラス化モデルを使用してモデルを定義しました。Category
モデルも定義しました。私のモデルのおもちゃバージョンは次のようになります。
models.py
さて、????
以上が私の質問です。各インスタンスに、サブクラスCategory
のリストを関連付けたいと思います。Item
個々のItem
インスタンスではなく、Item
サブクラスです。
例: 特定のCategory
インスタンスを作成するとします<Category: terry>
。GilliamItem
ここで、とJonesItem
サブクラスが "terry" に属していることを Django に伝えたいと思いますCategory
。
—</p>
これをどのように使用しますか?次のようにビューを書きたいと思います。
ビュー.py
Category
つまり、私のビュー (1) はオブジェクトを取得します。(2)キーがそれに関連付けられたモデルの名前でCategory
あり、値がそれらのモデルのすべてのインスタンスを含むクエリセットである辞書を構築します。(3) その辞書をテンプレートに提供します。
例: 私は を訪れhttp://domain.com/category/terry/
ます。Category
ビューはデータベースからオブジェクトを取得しname='terry'
ます。c.item_types
7 行目で が生成[GilliamItem, JonesItem]
されるため、辞書は のようになり{ 'gilliam items': GilliamItem.objects.all(), 'jones items': JonesItem.objects.all() }
ます。
—</p>
最後に、サイト管理者が管理サイトを通じてCategory
オブジェクトと型の間のマッピングを任意に再配置できるようにしたいと思います。(例: ある日、"Terry" を編集してから削除し、場合によっては を追加することにするかもしれません。)Item
Category
JonesItem
item_types
PratchettItem
django - 一般的なリレーションと Django でのオブジェクトの繰り返し
Post、Category、Flag という 3 つのモデルがあります。カテゴリでタグ付けされた各投稿にユーザーがフラグを立てられるようにします。ここで、特定のカテゴリの投稿に関連するすべてのフラグを一覧表示したいと考えています。ListViewジェネリックビューを使用してそれを行う2つの方法を見つけました:
最初のアプローチ:
Flag と Category の間の一般的な関係を定義して、次のようなものを呼び出せるようにします。Flag.objects.filter(object__categor=self.category)
2 番目のアプローチ:
私の質問は、どちらのアプローチがより効率的ですか? 私は一般的な関係に慣れていませんが、少し重いようです。一方、すべての Flag オブジェクトに対してクエリを実行し、それらを反復処理するのは、簡単なことではありません。
モデル.py
Text または Image インスタンスをそれぞれ保存したら、Post モデルを作成します。したがって、投稿にフラグを立てるか、テキストにフラグを立てて画像にフラグを立てることができます。
[また、一般的な関係を使用する必要がある場合に備えて、どのように一般的な関係を定義できるかについてのヒントもいただければ幸いです]
python - Django Rest Framework で GenericRelation を使用するにはどうすればよいですか?
GenericRelation
DRF に backrefrence を持つモデルを含めたい
ドキュメントは、これが簡単であることを示しています(すぐ上:http://www.django-rest-framework.org/api-guide/relations/#manytomanyfields-with-a-through-model)-しかし、私は何かが欠けています!
GenericRelation フィールドを使用して表現されたリバース ジェネリック キーは、通常のリレーショナル フィールド タイプを使用してシリアル化できることに注意してください。これは、関係のターゲットのタイプが常に既知であるためです。
詳細については、ジェネリック リレーションに関する Django ドキュメントを参照してください。
私のモデル:
そして私のシリアライザー:
コメントアウトされた 2 つの行は、DRF にvoteable
内部でシリアル化する方法を伝える私の試みQuestion
です。
'GenericRelatedObjectManager' object has no attribute 'pk'
そして2番目
<django.contrib.contenttypes.fields.create_generic_related_manager.<locals>.GenericRelatedObjectManager object at 0x7f7f3756cf60> is not JSON serializable
だから、明らかに私は何かを誤解しています。