Qオブジェクトの具体的な使い方
ここから、Qオブジェクトの使い方をみていきましょう。
Qオブジェクトは、filterメソッドとともに使われることが多いです。
[補足]
getメソッドと共に使うこともできますが、getメソッドは一つのオブジェクトを取ることしかできません(fileterのように一連のデータを返すことができませn)ので、実質的にgetメソッドとQオブジェクトを一緒に使う機会はほとんどないかと思います。
初期設定したコードの詳細については
初期設定コードという記事を参考にしてください。
[コード]
-BASE/app/models.py
class NewModel(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
[コード]
-BASE/app/urls.py
from django.urls import path
from .views import qobuject
urlpatterns = [
path('fbv', qobject, name='qobject'),
]
[コード]
-BASE/app/views.py
1 from django.http import HttpResponse
2 from db.models import Q
3 def qobject(request):
4 objects = NewModel.objects.filter(Q(title_startswith='1'))
5 print(objects)
6 return HttpResponse('')
[コードの解説]
(1) まず、2行目でQオブジェクトをimportしていることを確認しましょう。
(2) 4行目で実際にQオブジェクトを使っています。具体的には、NewModelの中のデータにおいて、titleが1から始まるデータがqueryset型のデータとしてobjectsに格納されます。
実際にコマンドラインで出力結果をみてみましょう。
なお、事前にtitleが1234というデータを一つ作っていることを前提としています。
[コマンドライン]
<QuerySet [<NewModel: 1234>]>
queryset型のデータを確認することができました。
このように、filterと組み合わせてQオブジェクトを使うことができます。