django error: 'unicode' object is not callable


Question

im attempting to do the django tutorial from the django website, and ive run into a bit of an issue: ive got to adding my __unicode__ methods to my models classes, but when ever i try to return the objects of that model i get the following error:

in __unicode__
    return self.question()
TypeError: 'unicode' object is not callable

im fairly new to python and very new to django, and i cant really see what ive missed here, if someone could point it out id be very grateful. A bit of code:

My models.py:

# The code is straightforward. Each model is represented by a class that subclasses django.db.models.Model. Each model has a number of 
# class variables, each of which represents a database field in the model.

from django.db import models

    class Poll(models.Model):
        question = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published') 

        def __unicode__(self):
            return self.question


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

        def __unicode__(self):
            return self.choice()

and in the interactive shell:

from pysite.polls.models import Poll, Choice
Poll.objects.all()
1
8
9/17/2012 3:41:09 PM

Accepted Answer

self.choice is a string value, but the code is trying to call it like a function. Just remove the () after it.

29
6/27/2016 8:51:29 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon