python - Data insertion error: invalid literal for int() with base 10 -


i'm using django-nonrel on google app engine. i'm trying add row database error when trying use save():

invalid literal int() base 10

here's code:

views.py

from django import forms django.contrib.auth.decorators import login_required django.contrib.auth.forms import usercreationform django.http import httpresponseredirect django.shortcuts import render_to_response forms import sayform models import saying, category import datetime  def say_something(request): if request.method == 'post':     form = sayform(request.post)     if form.is_valid():         cd = form.cleaned_data         content = cd['content']         category_temp = "uncategorized"         category = category.objects.get(name = category_temp)         added_date = datetime.datetime.now()         added_user = request.user         saying = saying(content, category, added_date, added_user)         saying.save()         return httpresponseredirect('/contribute/success') else:     form = sayform() return render_to_response('say_form.html', {'form' : form}) 

models.py

from django.db import models django.contrib.auth.models import user  class category(models.model):     name = models.charfield(max_length = 50)      def __unicode__(self):         return self.name  class saying(models.model):     content = models.charfield(max_length = 160)     category = models.foreignkey(category)     added_date = models.datefield()     added_user = models.foreignkey(user) 

forms.py

from django import forms  class sayform(forms.form):     content = forms.charfield(widget = forms.textarea)      def clean_message(self):         content = self.cleaned_data['content']         num_characters = len(content)         if num_characters > 160:             raise forms.validationerror("please limit saying 160 characters only.")         num_words = len(content.split())         if num_words < 4:             raise forms.validationerror("this doesn't make sense. longer.")         return content 

edit: here's backtrace

traceback: file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/core/handlers/base.py" in get_response 107. response = callback(request, *callback_args, **callback_kwargs)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/contrib/auth/decorators.py" in _wrapped_view 25. return view_func(request, *args, **kwargs)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/core/views.py" in say_something 36. saying.save()

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/base.py" in save 452. self.save_base(using=using, force_insert=force_insert, force_update=force_update)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/base.py" in save_base 550. f in meta.local_fields]

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/fields/subclassing.py" in inner 28. return func(*args, **kwargs)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/fields/subclassing.py" in inner 28. return func(*args, **kwargs)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/fields/init.py" in get_db_prep_save 280. return self.get_db_prep_value(value, connection=connection, prepared=false)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/fields/subclassing.py" in inner 53. return func(*args, **kwargs)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/models/fields/init.py" in get_db_prep_value 492. return connection.ops.value_to_db_auto(value)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/djangotoolbox/db/base.py" in value_to_db_auto 68. return super(nonreldatabaseoperations, self).value_to_db_auto(value)

file "/home/eeyorexd/workspace/python/appengine/something-to-say/somethingtosay/django/db/backends/init.py" in value_to_db_auto 485. return int(value)

exception type: valueerror @ /contribute/ exception value: invalid literal int() base 10: 'test'

my gut feeling tells me problem lies somewhere around how save object database. maybe foreign key part? can't pinpoint problem since started learning django recently. problem have django-nonrel using gae's backend? can tell me went wrong here?

the problem here:

saying = saying(content, category, added_date, added_user) 

you've forgotten django adds automatic id field model definition. if did in shell, printed saying.__dict__, see content has been assigned id, category content, , on.

instead, use keyword arguments when instantiating model:

saying = saying(content=content,                  category=category,                  added_date=added_date,                  added_user=added_user) 

Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

c# - How to execute a particular part of code asynchronously in a class -

c# - Asterisk click to call -