DjangoCamp:#3: get ,filter , ****_set.create()

2つの違いがちゃんとわかっていない。
– Poll.objects.get
– Poll.objects.filter

まず、フィルターしてみる。

>>> b=Poll.objects.filter(question__startswith=’What’)
090214 17:16:01     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE `polls_poll`.`question` LIKE BINARY ‘What%’  LIMIT 21

getしてみる

>>> Poll.objects.get(pub_date__year=2009)
<Poll: What’s up?>
090214 17:17:07     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE `polls_poll`.`pub_date` BETWEEN ‘2009-01-01 00:00:00’ and ‘2009-12-31 23:59:59.99’

>>> Poll.objects.get(pub_date__month=2)
<Poll: What’s up?>
090214 17:17:54     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE EXTRACT(MONTH FROM `polls_poll`.`pub_date`) = ‘2’

>>> Poll.objects.get(pub_date__day=14)
<Poll: What’s up?>
090214 17:19:04     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE EXTRACT(DAY FROM `polls_poll`.`pub_date`) = ’14’

>>> Poll.objects.get(pub_date__year=2009,pub_date__day=14)
<Poll: What’s up?>
090214 17:19:39     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE (`polls_poll`.`pub_date` BETWEEN ‘2009-01-01 00:00:00’ and ‘2009-12-31 23:59:59.99′ AND EXTRACT(DAY FROM `polls_poll`.`pub_date`) = ’14’)

getで2件見つかるSQL文のときになにがおこるか? これって宿題ですかね。

PK指定してget

>>> p = Poll.objects.get(pk=1)
090214 17:22:44     309 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE `polls_poll`.`id` = 1

pollの子供テーブルchoiceに3件レコードを追加してみる。

>>> p.choice_set.create(choice=’Not much’, votes=0)
<Choice: Not much>
090214 17:23:05     309 Query       INSERT INTO `polls_choice` (`poll_id`, `choice`, `votes`) VALUES (1, ‘Not much’, 0)
                    309 Query       commit
>>> p.choice_set.create(choice=’The sky’, votes=0)
<Choice: The sky>

090214 17:23:35     309 Query       INSERT INTO `polls_choice` (`poll_id`, `choice`, `votes`) VALUES (1, ‘The sky’, 0)
                    309 Query       commit

>>> c = p.choice_set.create(choice=’Just hacking again’, votes=0)
090214 17:24:06     309 Query       INSERT INTO `polls_choice` (`poll_id`, `choice`, `votes`) VALUES (1, ‘Just hacking again’, 0)
090214 17:24:07     309 Query       commit

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中