Hi there,
can someone help me understand why the following code (posted also
here: http://dpaste.com/4867/) skips validation in clean_city entirely?
Am i not trapping the error correctly by evaluating against None?
I need to say that if a city is specified you can't specify a region or
a province... in other words either u specify a city OR you specify a
province OR you specify a region.
The application is a bug tracker for countries (in my case i want to
track down all Italian bugs so we'll have a Django scaling story to
tell too since they are way too many :) and these fields should help
define the *scope* of the bug.
Also a weird behavior is that if i specify all 3 fields city, province
and region only province and region get saved in the db.
Thanks,
Lorenzo
P.S I've just posted the essential code
from django.newforms import *
from buggato.main.models import *
from django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect, Http404,
HttpRequest
all_cities = [(c.id, c.city) for c in
City.objects.all().order_by("city")[:10]]
all_cities.insert(0, ("", "-- select --"))
all_regions = [(r.id, r.region) for r in
Region.objects.all().order_by("region")]
all_regions.insert(0, ("", "-- select --"))
all_provinces = [(p.id, p.province) for p in
Province.objects.all().order_by("province")]
all_provinces.insert(0, ("", "-- select --"))
all_departments = [(d.id, d.name) for d in
Department.objects.all().order_by("name")]
all_departments.insert(0, ("", "-- select --"))
class BugForm(Form):
title = CharField()
severity = IntegerField(widget=Select(choices=BUG_SEVERITY))
department = IntegerField(widget=Select(choices=all_departments),
required=False)
description = CharField(widget=Textarea())
city = IntegerField(widget=Select(choices=all_cities),
required=False)
address = CharField(required=False)
province = IntegerField(widget=Select(choices=all_provinces),
required=False)
region = IntegerField(widget=Select(choices=all_regions),
required=False)
def clean_city(self):
if ((self.clean_data.get("city") != None) and
(self.clean_data.get("province") != None)):
raise ValidationError(u"Since you specified a city you
can't specify a province")
elif ((self.clean_data.get("city") != None) and
(self.clean_data.get("region") != None)):
raise ValidationError(u"Since you specified a city you
can't specify a region")
def new_bug(request):
if request.method=="POST":
form = BugForm(request.POST)
if form.is_valid():
b = Bug(title=form.clean_data["title"],
severity=form.clean_data["severity"],
description=form.clean_data["description"],
city_id=form.clean_data["city"],
address=form.clean_data["address"],
province_id=form.clean_data["province"],
region_id=form.clean_data["region"],
assigned_to_id=form.clean_data["department"])
b.save()
return HttpResponse("Object saved")
else:
context = dict(form=form)
return render_to_response("new_bug.html", context)
else:
form = BugForm()
context = dict(form=form)
return render_to_response("new_bug.html", context)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---