Hello Jorge, Adding save() method solved the problem. Seems like I misunderstood the documentation.
As for using Entry.AddManipulator: I can't use it as I want to use my own additional validation methods like: (`nr` starting from 023, etc.). Maybe this could be done the other way (validation methods defined in my model, and validator_list= for specified field in my model definition), but I've decided to play (and learn the) with manipulators. Thanks! Robert Jorge Gajon napisal(a): > Hi, > You need to implement the save() method in your custom manipulator. > > Cheers > > > On 7/14/06, Robert <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > When using custom Manipulator (which in fact does nothing.. I've cut > > some additional custom validation here) I'm getting error as follows: > > ---------------- > > Traceback (most recent call last): > > File > > "/usr/local/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/core/handlers/base.py" > > in get_response > > 74. response = callback(request, *callback_args, **callback_kwargs) > > File "/usr/local/www/data/django/projects/pbook/../pbook/book/views.py" > > in create_entry > > 23. new_entry = manipulator.save(new_data) > > File > > "/usr/local/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/forms/__init__.py" > > in save > > 92. raise NotImplementedError > > > > NotImplementedError at / > > ----------------- > > > > Python 2.4.2, DB: SQLite, svn from trunk as of July 13th > > > > Error occurs on POST when submitting, I am able to see & fill in the > > form. > > > > This is my code: > > > > ---> book/models.py > > from django.db import models > > > > class Entry(models.Model): > > name = models.CharField(blank=False, maxlength=30) > > last = models.CharField(blank=False, maxlength=50) > > nr = models.IntegerField(unique=True, blank=True, maxlength=10) > > nr_mobile = models.IntegerField(unique=True, blank=True, > > maxlength=9) > > > > def __str__(self): > > return self.name > > > > class Admin: > > pass > > > > --> book/views.py > > from django.shortcuts import render_to_response > > from django.core import validators > > from django import forms > > from pbook.book.models import Entry > > from django.http import Http404, HttpResponse, HttpResponseRedirect > > > > def create_entry(request): > > manipulator = EntryManipulator() > > > > if request.POST: > > new_data = request.POST.copy() > > > > errors = manipulator.get_validation_errors(new_data) > > > > if not errors: > > manipulator.do_html2python(new_data) > > new_entry = manipulator.save(new_data) > > return HttpResponse("Entry created: %s" % new_entry) > > else: > > errors = new_data = {} > > > > form = forms.FormWrapper(manipulator, new_data, errors) > > return render_to_response('book/entry_form.html', {'form': form }) > > > > class EntryManipulator(forms.Manipulator): > > def __init__(self): > > self.fields = ( > > forms.TextField(field_name='name', > > is_required=True, maxlength=30), > > forms.TextField(field_name='last', > > is_required=True, maxlength=50), > > forms.IntegerField(field_name='nr', > > maxlength=10), > > forms.IntegerField(field_name='nr_mobile', > > maxlength=9), > > ) > > > > ---> urls.py > > from django.conf.urls.defaults import * > > from pbook.book.models import Entry > > > > urlpatterns = patterns('', > > (r'^$', 'pbook.book.views.create_entry'), > > (r'^admin/', include('django.contrib.admin.urls')), > > ) > > > > ---> templates/book/entry_form.html > > {% if form.has_errors %} > > <h2>Please correct the following error{{ form.error_dict|pluralize > > }}:</h2> > > {% endif %} > > > > <form method="post" action="."> > > <p> > > <label for="id_imie">Name:</label> {{ form.name }} > > {% if form.name.errors %}*** {{ form.name.errors|join:", " }}{% > > endif %} > > </p> > > <p> > > <label for="id_last">Last:</label> {{ form.last }} > > {% if form.last.errors %}*** {{ form.last.errors|join:", " }}{% > > endif %} > > </p> > > <p> > > <label for="id_nr">Phone nr:</label> {{ form.nr }} > > {% if form.nr.errors %}*** {{ form.nr.errors|join:", " }}{% endif > > %} > > </p> > > <p> > > <label for="id_nr_mobile">Mobile nr:</label> {{ form.nr_mobile }} > > {% if form.nr_mobile.errors %}*** {{ form.nr_mobile.errors|join:", > > " }}{% endif %} > > </p> > > <input type="submit" /> > > </form> > > > > Thanks, > > Robert > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users -~----------~----~----~----~------~----~------~--~---