Django 4
dir vs vars
dir
dirにアクセスするには、
pipenv shell
を使用して仮想環境にアクセスし、python manage.py shell
を入力してshellにアクセスします.次にUserというクラスをインポートします
データベースからobjectsをインポートする方法たとえば、2人のユーザーをどのようにインポートしますか?
入力
dir(User)
です.dirはクラスの名前のリストを返します.
入力
vars(User)
です.varsは、
__dict__
、dictionary、またはクラスリストの表示を返します.ユーザークラスはAbstractUserを継承し、AbstractBasicUserを使用し、モデルを使用するため、managerを含む直接作成されていないコンテンツをインポートできます.Managers
manager
データベースから要素をインポートできます.sqlを使用せずにPythonを使用してインポートできます.これは長い間強力な機能の一つです.データモデルを作成すると、障害
database-abstraction API
が自動的に提供されます.このAPIでは、オブジェクト(CRUD)を作成、検索、更新、削除できます.QuerySet
QuerySet
は、データベースからのスマートオブジェクトのリストです.すべてのプレイヤーをインポート
User.objects.all()
#<QuerySet [<User>: David_Kim, <User>:Tanon_Kim] >
上記のコードを入力すると、
QuerySet
が返されます.all_user = User.objects.all()
all_user.filter(superhost=True)
#<QuerySet [<User>: tanonkim] >
上のコードのようにfilter、exclude、コメントを掛けて、すべての内容を表示できます.ユーザーのtanonkimを取得します.
SET
さらに表示するには、
dir(David_Kim)
を入力します.次は結果です.message_set, room_set, review_set..... userはsetで何をしますか...?
roomを作成すると、このroomにはForeignキーがあるため、hostがあります.ユーザー向けの部屋にもアクセスできます.setを利用することです!
これは、「入る」パネルに部屋情報はないものの、コードにも情報が入っているためです.要素に外部キーを割り当てると、その要素は外部キーにもアクセスできます.
related_name
!class Room(core_models.TimeStampedModel):
amenities = models.ManyToManyField("Amenity", related_name="rooms", blank=True)
facilities = models.ManyToManyField("Facility", related_name="rooms", blank=True)
houserules = models.ManyToManyField("HouseRule", related_name="rooms", blank=True)
もう1つの例は、qというQuestionモデル(1)にAnswerモデル(N)というForeignKey接続がある.aでQuestionを取得したい場合は、簡単に入手できます.
a.question
Answerモデルオブジェクトとしてのaはquestion属性を持つため,aによる問題の検索は非常に容易である.では、逆に、質問で答えを見つけることができますか?Questionモデルには応答属性がなく,不可能かもしれないが,実際には可能である.answer_set
.q.answer_set.all()
QuestionモデルやAnswerモデルなどの相互に関連付けられている場合は、接続モデル名setと同じ方法で関連付けられたデータを問い合わせることができます.RECAP
1)
related_name
by ManyToOne
related nameによってuser(1)の立場からroom(N)を検索することもできる.room modelsでは、関連するnameを使用してuserからroomを逆参照できます.
migrateを忘れないで!
2)
ManyToMany
,OneToOne
の関係はroomである.amenities.all()のようにそのまま持って来ればいい!3)
query_set manager
マネージャからall()、filter()、count()を使用できます.Reference
この問題について(Django 4), 我々は、より多くの情報をここで見つけました https://velog.io/@tritny6516/Django-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol