I'm having a strange problem with my site wherein a ModelForm doesn't
appear to recognize that it has an attribute that it ought to.  I
should preface this by saying that I recently moved my codebase to a
new server--everything had been working fine on the old server and I
haven't made any changes to the code since then, so that seems like
the only thing that could have changed, but I have no idea what the
problem is.

In any case, here are the relevant bits of code:

==========
article/forms.py:

from models import Article
from django import forms

[snip]

class AddArticleForm(forms.ModelForm):
  body = forms.CharField(widget=forms.Textarea(attrs={'rows': '25',
'cols': '80'}))
  slug = forms.CharField(max_length=25,required=False)

  class Meta:
    model = Article
    exclude = ('node_ptr','archetype','created','author','section')

==========
article/models.py:

from django.db import models
from sake.node.models import Node
from sake.misc import blurbify

class Article(Node):
  body = models.TextField()
  blurb = property(lambda self: blurbify(self.body, 100))

  def __str__(self):
    return self.title

==========
node/models.py:

from django.db import models
from django.contrib.auth.models import User, Group
import re
from sake.misc import slugrepl
from tagging.models import Tag

# Create your models here.

class Section(models.Model):
  section = models.CharField(max_length=50)
  keyword = models.CharField(max_length=15)
  sort_reverse = models.BooleanField()

  def __str__(self):
    return self.section

  def get_absolute_url(self):
    return ('sake.node.views.node_section_all', (), {'sect':
self.keyword})
  get_absolute_url = models.permalink(get_absolute_url)

  def save(self):
    #g = Group.objects.create(name=self.keyword)
    #g.save()
    super(Section,self).save()

class Archetype(models.Model):
  classname = models.CharField(max_length=15)

  def __str__(self):
    return self.classname

class Node(models.Model):
  author = models.ForeignKey(User)
  created = models.DateTimeField()
  published = models.BooleanField()
  promoted = models.BooleanField()
  section = models.ForeignKey(Section)
  archetype = models.ForeignKey(Archetype)
  title = models.CharField(max_length=255)
  slug = models.SlugField(max_length=25)
  comments_enabled = models.BooleanField()
  tag_list = models.CharField(max_length=255)

  def _get_tags(self):
    return Tag.objects.get_for_object(self)

  def _set_tags(self, tag_list):
    Tag.objects.update_tags(self, tag_list)

  tags = property(_get_tags, _set_tags)

  def _blurb(self):
    if self.archetype.classname is not "Node":
      return getattr(self, self.archetype.classname.lower()).blurb
    else:
      return u"Created by %s" % (self.author.username,)

  blurb = property(_blurb)

  def __str__(self):
    return self.title

  def get_absolute_url(self):
    return ('sake.node.views.node_detail', (), {
        'sect': self.section.keyword,
        'yr': self.created.year,
        'mo': self.created.strftime('%m'),
        'slg': self.slug})
  get_absolute_url = models.permalink(get_absolute_url)

  def save(self):
    self.archetype = Archetype.objects.get(classname=type
(self).__name__)
    if len(self.slug) == 0:
      self.slug = re.sub('\W', slugrepl, self.title.lower().strip())[:
25]
    super(Node,self).save()
    self.tags = self.tag_list

==========
article/views.py:

from forms import ArticleForm, AddArticleForm
from django.shortcuts import render_to_response
from datetime import datetime
from sake.node.models import Section
from sake.article.models import Article
from django.core.paginator import Paginator
from django.template import RequestContext
from django.template.defaultfilters import slugify

def add_article(request, sect):
  if request.user.is_authenticated():
    if request.user.is_superuser or request.user.groups.filter
(name=sect).count():
      if request.method == 'POST':
        form = AddArticleForm(request.POST)
        if not form.slug:
          form.slug = slugify(form.title)
        if form.is_valid():
          article = form.save(commit=False)
          article.author = request.user
          article.created = datetime.now()
          article.section = Section.objects.get(keyword=sect)
          article.save()
          return render_to_response('thanks.html',
context_instance=RequestContext(request))
      else:
        form = AddArticleForm()
      return render_to_response('article/add_article.html', {'form':
form}, context_instance=RequestContext(request))
  return render_to_response('needperms.html',
context_instance=RequestContext(request))

==========

The error comes up in views.py from the add_article() method, the line
"if not form.slug:"  The error itself is: 'AddArticleForm' object has
no attribute 'slug'

This is pretty odd to me, since it seems clear to me from the
declaration that AddArticleForm does have that attribute.  Further,
this used to work.

I am in the HEAD revision of django as of a few minutes ago, and my
Python version is 2.5.4.  Actually, now that I think of it, I may have
been using Python 2.4 on the old server.  Could that be the problem?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
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