Hello,

I'm trying to learn Django from the book "Practical Django Projects 2nd 
Edition"
 I'm using Django 1.3.1 and Python 2.7.2 on Windows 7
Also I'm using Eclipse Indigo with pydev 

The current project I'm working on is to create a Weblog called coltrane.
coltrane is an application that exists in a project called 
"cmswithpythonanddjango"

Inside the models.py is a class called Entry which holds the fields used to 
Enter a weblog entry.
When I go to localhost:8000/admin/    I get the option to add and Entry.
I can select this option fill out sample data, but when I try to save it.
I get the following error.

AttributeError at /admin/coltrane/entry/add/

'Entry' object has no attribute 'pubdate'


There is a field called pub_date in Entry

It's as if I have made a typing error somewhere and typed pubdate instead of 
pub_date.

Below is the models.py, views.py , url.py , and admin.py files


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Here is my models.py

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.db import models
import datetime
from tagging.fields import TagField
from django.contrib.auth.models import User
from markdown import markdown



class Category(models.Model):
    title = models.CharField(max_length=250, help_text="Maximum 250 
characters.")
    slug = models.SlugField(help_text="Suggested value automatically 
generated from title. Must be unique.")
    description = models.TextField()
    
    class Meta:
        ordering = ['title']
        verbose_name_plural = "Categories"
    
    def __unicode__(self):
            return self.title
    
    def get_absolute_url(self):
        return "/categories/%s/" % self.slug

class Entry(models.Model):
    LIVE_STATUS = 1
    DRAFT_STATUS = 2
    HIDDEN_STATUS = 3
    STATUS_CHOICES = (
    (LIVE_STATUS, 'Live'),
    (DRAFT_STATUS, 'Draft'),
    (HIDDEN_STATUS, 'Hidden')
    )
    
    # Core fields
    title = models.CharField(max_length=250, help_text = "Maximum 250 
characters. ")
    excerpt = models.TextField(blank=True, help_text = "A short summary of 
the entry. Optional.")
    body = models.TextField()
    pub_date = models.DateTimeField(default = datetime.datetime.now)
    
    # Fields to store generated HTML
    excerpt_html = models.TextField(editable=False, blank=True)
    body_html = models.TextField(editable=False, blank=True)
    
    # Metadata
    author = models.ForeignKey(User)
    enable_comments = models.BooleanField(default=True)
    featured = models.BooleanField(default=False)
    slug = models.SlugField(unique_for_date = 'pub_date', help_text = 
"Suggested value automatically generated from title. Must be unique.")
    status = models.IntegerField(choices=STATUS_CHOICES, 
default=LIVE_STATUS, help_text = "Only entries with live status will be 
publicly displayed.")
    
    # Categorization.
    categories = models.ManyToManyField(Category)
    tags = TagField(help_text = "Separate tags with spaces.")
   
    class Meta:
        verbose_name_plural = "Entries"
        ordering = ['-pub_date']
        
    def __unicode__(self):
        return self.title
    
    def save(self, force_insert=False, force_update=False):
        self.body_html = markdown(self.body)
        if self.excerpt:
            self.excerpt_html = markdown(self.excerpt)
            super(Entry, self).save(force_insert, force_update)
    
    def get_absolute_url(self):
        return "/weblog/%s/%s/" % 
(self.pub_date.strftime("%Y/%b/%d").lower(), self.slug)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Here is the views.py

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.shortcuts import render_to_response

from cmswithpythonanddjango.coltrane.models import Entry

def entries_index(request):
    return render_to_response('coltrane/entry_index.html', { 'entry_list': 
Entry.objects.all() })

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Here is the url.py

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.conf.urls.defaults import patterns, include, url
from cmswithpythonanddjango.coltrane.models import Entry

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

entry_info_dict = {
    'queryset' : Entry.objects.all(),
    'data_field' : 'pub_date'
}

urlpatterns = patterns('',
   
    # Examples:
    # url(r'^$', 'cms.views.home', name='home'),
    # url(r'^cms/', include('cms.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    (r'^tiny_mce/(?P<path>.*)$', 'django.views.static.serve',
        { 'document_root': 
'C:/users/lau/documents/tinymce/jscripts/tiny_mce/' }),
    (r'^search/$', 'cmswithpythonanddjango.search.views.search'),
    (r'^weblog/$', 'cmswithpythonanddjango.coltrane.views.entries_index'),
    
(r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 
'django.views.generic.date_based.object_detail', entry_info_dict),
    (r'', include('django.contrib.flatpages.urls')),
     # (r'^(?P<url>.*)$', 'flatpage'),
)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Here is the admin.py

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

from django.contrib import admin
from cmswithpythonanddjango.coltrane.models import Entry, Category

class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields = { 'slug': ['title'] }
    
class EntryAdmin(admin.ModelAdmin):
    prepopulated_fields = { 'slug': ['title'] }

admin.site.register(Entry, EntryAdmin)
admin.site.register(Category, CategoryAdmin)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

I can't think of anywhere else the problem could be other than in one of 
the above files.
If somebody knows what the problem is I would be very grateful if they 
could tell me what it is.
Failing that, I would appreciate any suggestion of where else I could look.


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/rJO7ankUf8AJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to