I'm a bit at a loss as to where to go from here...
I have simple Link and Category models. My Link model is essentially:
user_id, category (FK), name, URL. I have a Meta unique_together on
(user, url) so no duplicate URLs get entered. I'm testing this by
trying to purposefully enter a duplicate URL.
At first my code threw an IntegrityError so I'm trying to catch that.
Here's my create view:
def create(request):
errors = {}
if request.method == 'POST':
form = LinkForm(request, request.POST)
if form.is_valid():
link = form.save(commit=False)
link.user = request.user
try:
link.save()
except IntegrityError:
errors['Duplicate URL'] = 'That URL is already a
link.'
else:
return HttpResponseRedirect(reverse('links_index'))
else:
form = LinkForm(request)
return render_to_response(
'links/link_form.html', {
'form': form,
'errors': errors,
},
context_instance=RequestContext(request)
)
But I get an InternalError. Trackback below:
Environment:
Request Method: POST
Request URL: http://localhost:8000/links/create/
Django Version: 1.1 pre-alpha
Python Version: 2.5.4
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'private_apps.links',
'django_extensions']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'private_apps.middleware.RequireLoginMiddleware')
Traceback:
File "/Users/rob/django/django-trunk/django/core/handlers/base.py" in
get_response
86. response = callback(request, *callback_args,
**callback_kwargs)
File "/Users/rob/git/private_apps/private_apps/../private_apps/links/
views.py" in create
61. context_instance=RequestContext(request)
File "/Users/rob/django/django-trunk/django/template/context.py" in
__init__
105. self.update(processor(request))
File "/Users/rob/django/django-trunk/django/core/
context_processors.py" in auth
27. 'messages': user.get_and_delete_messages(),
File "/Users/rob/django/django-trunk/django/contrib/auth/models.py" in
get_and_delete_messages
262. for m in self.message_set.all():
File "/Users/rob/django/django-trunk/django/db/models/query.py" in
_result_iter
186. self._fill_cache()
File "/Users/rob/django/django-trunk/django/db/models/query.py" in
_fill_cache
667. self._result_cache.append(self._iter.next
())
File "/Users/rob/django/django-trunk/django/db/models/query.py" in
iterator
281. for row in self.query.results_iter():
File "/Users/rob/django/django-trunk/django/db/models/sql/query.py" in
results_iter
238. for rows in self.execute_sql(MULTI):
File "/Users/rob/django/django-trunk/django/db/models/sql/query.py" in
execute_sql
1935. cursor.execute(sql, params)
File "/Users/rob/django/django-trunk/django/db/backends/util.py" in
execute
19. return self.cursor.execute(sql, params)
Exception Type: InternalError at /links/create/
Exception Value: current transaction is aborted, commands ignored
until end of transaction block
Since this looked like a transaction issue I tried adding a
transaction.rollback() to my IntegrityError except clause but that
threw its own error that it wasn't in transaction management.
Side note: I'm curious if the IntegrityError might be worth putting in
the metaclass to add to the base model class, so one doesn't need to
import it specifically, they could use `except Link.IntegrityError`?
Thanks,
Rob
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---