Help about tutorial1 (about Poll object)

111 views
Skip to first unread message

Nicolas Steinmetz

unread,
Aug 25, 2006, 11:20:57 AM8/25/06
to django...@googlegroups.com
Hello,

I'm new in Django (so hello world :) ) but I have one question about
tutorial1.

Cf : http://www.djangoproject.com/documentation/tutorial1/

In polls/models.py, we have already two classes :

from django.db import models

# Create your models here.
class Poll(models.Model):
question = models.CharField(maxlength=200)
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(maxlength=200)
votes = models.IntegerField()

Do we have to add __str__() methodes after pub_date and votes lines or
to remove them ?

If I do :

from django.db import models
import datetime

# Create your models here.
class Poll(models.Model):
question = models.CharField(maxlength=200)
pub_date = models.DateTimeField('date published')

def __str__(self):
return self.question

def was_published_today(self):
return self.pub_date.date() == datetime.date.today()

class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(maxlength=200)
votes = models.IntegerField()

def __str__(self):
return self.choice

it seems it does not work... and I do not have :

# Make sure our __str__() addition worked.
>>> Poll.objects.all()
[<Poll: What's up?>]

instead of it I have :

# objects.all() displays all the polls in the database.
>>> Poll.objects.all()
[<Poll: Poll object>]

Thanks for your support :)
Nicolas

Waylan Limberg

unread,
Aug 25, 2006, 11:45:00 AM8/25/06
to django...@googlegroups.com
On 8/25/06, Nicolas Steinmetz <nstei...@gmail.com> wrote:
>
[snip]

>
> it seems it does not work... and I do not have :
>
> # Make sure our __str__() addition worked.
> >>> Poll.objects.all()
> [<Poll: What's up?>]
>
> instead of it I have :
>
> # objects.all() displays all the polls in the database.
> >>> Poll.objects.all()
> [<Poll: Poll object>]
>
Did you close your shell and restart it so that the changes can be imported?

I just checked the tutorial and you aren't expressly told that you
have to do so, although it is implied. I suppose this is because a
basic understanding of python is expected.


--
----
Waylan Limberg
way...@gmail.com

Nicolas Steinmetz

unread,
Aug 25, 2006, 12:18:05 PM8/25/06
to django...@googlegroups.com
Waylan Limberg a écrit :

> Did you close your shell and restart it so that the changes can be imported?

No I did not.

As my (python) shell was open, I only did :

from mysite.polls.models import Poll, Choice

> I just checked the tutorial and you aren't expressly told that you
> have to do so, although it is implied. I suppose this is because a
> basic understanding of python is expected.

Unless you have just modified it, it is indeed :

"Let's jump back into the Python interactive shell by running python
manage.py shell again:"

Anyway, thanks for your support, I'll see all of this tomorrow ;-)

Have a nice week end,
Nicolas

Waylan Limberg

unread,
Aug 25, 2006, 3:10:59 PM8/25/06
to django...@googlegroups.com
On 8/25/06, Nicolas Steinmetz <nstei...@gmail.com> wrote:
>
> Waylan Limberg a écrit :
>
> > Did you close your shell and restart it so that the changes can be imported?
>
> No I did not.
>
> As my (python) shell was open, I only did :
>
> from mysite.polls.models import Poll, Choice

Once an object is imported, python will not import it again even if it
has been edited/changed. Therefore, you have to close the shell,
reopen it and only then can you import your changes.

<aside>
There is the reload() function, but that only works on modules and
were importing classes here. See
http://docs.python.org/lib/built-in-funcs.html and scroll down for
more info.
</aside>


>
> > I just checked the tutorial and you aren't expressly told that you
> > have to do so, although it is implied. I suppose this is because a
> > basic understanding of python is expected.
>
> Unless you have just modified it, it is indeed :
>
> "Let's jump back into the Python interactive shell by running python
> manage.py shell again:"
>

Maybe that should be tuned a little. How about:

"Let's restart the Python interactive shell by running python
manage.py shell again:"

--
----
Waylan Limberg
way...@gmail.com

Reply all
Reply to author
Forward
0 new messages