DjangoCamp:#3:filterした結果にはchoice_setが使えない

hdknrinthespace – Windows Livefilterした結果のpollにはchoice_setが使えない!

hdknr@deb09:~/djangocamp/trunk/mysite$ python manage.py shell
Python 2.5.2 (r252:60911, Jan  4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from polls.models import *
>>> p=Poll.objects.filter(id=1)
>>> p
[<Poll: What’s up?>]
090214 17:34:43     312 Connect     mysite@localhost on mysite
                    312 Query       SET NAMES utf8
                    312 Query       set autocommit=0
                    312 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE `polls_poll`.`id` = 1  LIMIT 21

>>> p.choice_set.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: ‘QuerySet’ object has no attribute ‘choice_set’

get()だと使えます。

>>> p=Poll.objects.get(id=1)
090214 17:36:24     312 Query       SELECT `polls_poll`.`id`, `polls_poll`.`question`, `polls_poll`.`pub_date` FROM `polls_poll` WHERE `polls_poll`.`id` = 1
>>> p.choice_set.all()
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]

090214 17:36:57     312 Query       SELECT `polls_choice`.`id`, `polls_choice`.`poll_id`, `polls_choice`.`choice`, `polls_choice`.`votes` FROM `polls_choice` WHERE `polls_choice`.`poll_id` = 1  LIMIT 21

choice_set.all()した結果、個別のレコードは削除できます。

>>> c=p.choice_set.all()
>>> c
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
090214 17:37:45     312 Query       SELECT `polls_choice`.`id`, `polls_choice`.`poll_id`, `polls_choice`.`choice`, `polls_choice`.`votes` FROM `polls_choice` WHERE `polls_choice`.`poll_id` = 1  LIMIT 21
>>> c=p.choice_set.all()
>>> c
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>>> c[2].delete()

090214 17:37:45     312 Query       SELECT `polls_choice`.`id`, `polls_choice`.`poll_id`, `polls_choice`.`choice`, `polls_choice`.`votes` FROM `polls_choice` WHERE `polls_choice`.`poll_id` = 1  LIMIT 21
090214 17:38:09     312 Query       SELECT `polls_choice`.`id`, `polls_choice`.`poll_id`, `polls_choice`.`choice`, `polls_choice`.`votes` FROM `polls_choice` WHERE `polls_choice`.`poll_id` = 1  LIMIT 1 OFFSET 2
                    312 Query       DELETE FROM `polls_choice` WHERE `id` IN (3)
                    312 Query       commit

1件減っています。

hdknr@deb09:~/djangocamp/trunk/mysite$ python manage.py shell
Python 2.5.2 (r252:60911, Jan  4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from polls.models import *
>>> Choice.objects.all()
[<Choice: Not much>, <Choice: The sky>]

090214 17:39:29     313 Connect     mysite@localhost on mysite
                    313 Query       SET NAMES utf8
                    313 Query       set autocommit=0
                    313 Query       SELECT `polls_choice`.`id`, `polls_choice`.`poll_id`, `polls_choice`.`choice`, `polls_choice`.`votes` FROM `polls_choice` LIMIT 21

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中