john doe
john doe

Reputation: 9660

Django Model Error for __unicode__ method

I have the following python code in a Django project:

import datetime
from django.utils import timezone
from django.db import models

# Create your models here.

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

    def __unicode__(self): 
        return self.question

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


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

    def __unicode__(self)
    return self.choice_text

When I run the python manage.py validate command I get the following error:

 def __unicode__(self)
                    ^
SyntaxError: invalid syntax

Any ideas?

Upvotes: 0

Views: 681

Answers (2)

Luc DUZAN
Luc DUZAN

Reputation: 1319

You forget the identation and the ":" It should be :

import datetime
from django.utils import timezone
from django.db import models

# Create your models here.

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

    def __unicode__(self): 
        return self.question

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


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

    def __unicode__(self):
        return self.choice_text

Upvotes: 3

karthikr
karthikr

Reputation: 99620

You forgot :

Change

def __unicode__(self)

to

def __unicode__(self):

Also, notice the indentation.

def __unicode__(self): 
    return u'{0}'.format(self.choice_text)
    #^ Indentation

Upvotes: 2

Related Questions