タグ付けされた質問 「django-orm」

クエリセットとモデルシステムで構成されるDjangoのORMシステム。

3
djangoクエリセットでOR条件を実行する方法は?
次のSQLクエリに相当するDjangoクエリを記述したいと思います。 SELECT * from user where income >= 5000 or income is NULL. Djangoクエリセットフィルターの作成方法 User.objects.filter(income__gte=5000, income=0) これはANDフィルターなので、機能しません。私がしたいOR個々のクエリセットの和集合を取得するためのフィルタ。

4
Django ORMのselect_relatedとprefetch_relatedの違いは何ですか?
Djangoドキュメントでは、 select_related() 外部キーの関係を「フォロー」し、クエリの実行時に追加の関連オブジェクトデータを選択します。 prefetch_related() 関係ごとに別々のルックアップを行い、Pythonで「結合」を行います。 「Pythonで参加する」とはどういう意味ですか?誰かが例で説明できますか? 私の理解では、外部キーの関係にはを使用しselect_relatedます。M2M関係の場合はを使用しますprefetch_related。これは正しいです?

4
Django自己参照外部キー
私はWebアプリケーションやデータベース関連の一般的な知識がまったくないので、これは馬鹿げた質問かもしれません。モデルの別のインスタンス(その親)のプライマリIDを指すフィールドを持つモデル( "CategoryModel")を作成します。 class CategoryModel(models.Model): parent = models.ForeignKey(CategoryModel) どうすればよいですか?ありがとう!


3
Djangoの値リストと値
Djangoでは、次の2つの違いは何ですか? Article.objects.values_list('comment_id', flat=True).distinct() 対 Article.objects.values('comment_id').distinct() 私の目標は、それぞれの下で一意のコメントIDのリストを取得することArticleです。私はドキュメントを読みました(そして実際には両方のアプローチを使用しています)。結果は明らかに似ています。

6
多対多フィールドを持つDjangoモデルのオブジェクトを作成するにはどうすればよいですか?
私のモデル: class Sample(models.Model): users = models.ManyToManyField(User) 両方user1とuser2そのモデルに保存したい: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() それは間違っていることはわかっていますが、私がやりたいことはきっと理解できます。どうしますか?

9
大規模なDjango QuerySetを繰り返し処理すると、大量のメモリが消費されるのはなぜですか?
問題のテーブルには、約1000万行が含まれています。 for event in Event.objects.all(): print event これにより、メモリ使用量が着実に4 GB程度に増加し、その時点で行が急速に印刷されます。最初の行が印刷される前の長い遅延は私を驚かせました-私はそれがほぼ瞬時に印刷されると思っていました。 私もEvent.objects.iterator()同じように振る舞いました。 Djangoがメモリに読み込んでいるものや、なぜDjangoがこれを行っているのか理解できません。私はDjangoがデータベースレベルで結果を反復処理することを期待していました。つまり、結果は(一定の待機後に一度にすべてではなく)ほぼ一定の速度で出力されます。 私は何を誤解しましたか? (それが適切かどうかはわかりませんが、PostgreSQLを使用しています。)


3
テーブルフィールドから個別の値を選択する
DjangoのORMに頭を悩ませています。私がしたいのは、テーブルのフィールド内の個別の値のリストを取得することです。次のいずれかに相当します。 SELECT DISTINCT myfieldname FROM mytable (または代わりに) SELECT myfieldname FROM mytable GROUP BY myfieldname 生のSQLに頼る前に、少なくともDjangoの方法でやりたいです。たとえば、テーブルの場合: id、street、city 1、メインストリート、ハル 2、その他の通り、ハル 3、Bibble Way、レスター 4、別の方法、レスター 5、ハイストリート、ロンディジウム 入手したい: ハル、レスター、ロンディジウム。

4
Djangoで複数のfilter()を連鎖させると、これはバグですか?
私はいつも、Djangoで複数のfilter()呼び出しをチェーンすることは、それらを単一の呼び出しで収集することと常に同じであると想定していました。 # Equivalent Model.objects.filter(foo=1).filter(bar=2) Model.objects.filter(foo=1,bar=2) しかし、私は自分のコードで複雑なクエリセットに遭遇しましたが、そうではありません class Inventory(models.Model): book = models.ForeignKey(Book) class Profile(models.Model): user = models.OneToOneField(auth.models.User) vacation = models.BooleanField() country = models.CharField(max_length=30) # Not Equivalent! Book.objects.filter(inventory__user__profile__vacation=False).filter(inventory__user__profile__country='BR') Book.objects.filter(inventory__user__profile__vacation=False, inventory__user__profile__country='BR') 生成されるSQLは SELECT "library_book"."id", "library_book"."asin", "library_book"."added", "library_book"."updated" FROM "library_book" INNER JOIN "library_inventory" ON ("library_book"."id" = "library_inventory"."book_id") INNER JOIN "auth_user" ON ("library_inventory"."user_id" = "auth_user"."id") …
103 django  django-orm 

5
Djangoのvalues()でアイテムの名前を変更する方法は?
私はdjangoproject.comのこのチケットとほとんど同じようにしたいのですが、追加のフォーマットがいくつかあります。このクエリから >>> MyModel.objects.values('cryptic_value_name') [{'cryptic_value_name': 1}, {'cryptic_value_name': 2}] 私はそのようなものを手に入れたいです: >>> MyModel.objects.values(renamed_value='cryptic_value_name') [{'renamed_value': 1}, {'renamed_value': 2}] 別の組み込みの方法はありますか、または手動で行う必要がありますか?
101 django  django-orm 

5
Djangoは重複するフィールド値を持つ行のみを選択します
次のように定義されたdjangoのモデルがあるとします。 class Literal: name = models.CharField(...) ... 名前フィールドは一意ではないため、値が重複する可能性があります。次のタスクを実行する必要があります。フィールドの重複する値が少なくとも1つあるモデルからすべての行を選択しますname。 私はプレーンSQLを使用してそれを行う方法を知っています(最善の解決策ではないかもしれません): select * from literal where name IN ( select name from literal group by name having count((name)) > 1 ); それで、django ORMを使用してこれを選択することは可能ですか?またはより良いSQLソリューション?
96 sql  django  django-orm 

4
djangoで個別の列をDISTINCTしますか?
SELECT * FROM...下に" "ではないクエリをDjangoで実行する方法があるかどうか知りたいです。SELECT DISTINCT columnName FROM ...代わりに" " を実行しようとしています。 具体的には、次のようなモデルがあります。 class ProductOrder(models.Model): Product = models.CharField(max_length=20, promary_key=True) Category = models.CharField(max_length=30) Rank = models.IntegerField() ここで、Rankは内のランクCategoryです。そのカテゴリ内の各ランクで何らかの操作を実行しているすべてのカテゴリを反復処理できるようにしたいと思います。 最初にシステム内のすべてのカテゴリのリストを取得してから、そのカテゴリ内のすべての製品をクエリし、すべてのカテゴリが処理されるまで繰り返します。 生のSQLは避けたいですが、そこに行かなければならない場合は問題ありません。Django / Pythonで生のSQLをコーディングしたことはありませんが。

4
Djangoフィルター多対多を含む
多対多の関係で多数のオブジェクトをフィルタリングしようとしています。trigger_rolesフィールドに複数のエントリが含まれている可能性があるため、containsフィルタを試しました。しかし、それは文字列で使用するように設計されているので、この関係をどのようにフィルタリングするかはほとんど無力です(values_list()atmは無視できます)。 この関数は、ユーザープロファイルに添付されています。 def getVisiblePackages(self): visiblePackages = {} for product in self.products.all(): moduleDict = {} for module in product.module_set.all(): pkgList = [] involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True) 私のワークフローモデルは次のようになります(簡略化): class Workflow(models.Model): module = models.ForeignKey(Module) current_state = models.ForeignKey(Status) next_state = models.ForeignKey(Status) allowed = models.BooleanField(default=False) involved_roles = models.ManyToManyField(Role, blank=True, null=True) trigger_roles = models.ManyToManyField(Role, blank=True, null=True) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.