Я использую Django-nonrel в Google App Engine.Я пытаюсь добавить строку в базу данных, но получаю эту ошибку при попытке использовать save ():
недопустимый литерал для int () с базой 10
Вот мой код:
views.py
from django import forms
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from forms import SayForm
from 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
from 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 your saying to 160 characters only.")
num_words = len(content.split())
if num_words < 4:
raise forms.ValidationError("This doesn't make sense. Say something longer.")
return content
Редактировать: вотобратная трассировка
Трассировка: файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/core/handlers/base.py" в get_response 107. response =обратный вызов (запрос, * callback_args, ** callback_kwargs)
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/contrib/auth/decorators.py" в _wrapped_view25. вернуть view_func (request, * args, ** kwargs)
File "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/core/views.py" в say_something 36. say.save ()
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/db/models/base.py" в save 452. self.save_base (using = using, force_insert = force_insert, force_update = force_update)
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/db/models/base.py«в save_base 550. для f в meta.local_fields]
File» /home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/db/models/fields/subclassing.py«во внутреннем 28. вернуть func (* args, ** kwargs)
File» / home / eeyorexd / workspace / Python / appengine / что-то сказать / что-то сказать / django / db / models / fields /subclassing.py "во внутреннем 28. вернуть func (* args, ** kwargs)
File" / home / eeyorexd / workspace / Python / appengine / что-то сказать / что-то сказать / что-то сказать / django / db / models/fields/init.py "в get_db_prep_save 280. вернуть self.get_db_prep_value (значение, соединение = соединение, подготовлено = False)
Файл" / home / eeyorexd / workspace / Python / appengine/something-to-say/somethingtosay/django/db/models/fields/subclassing.py "во внутреннем 53. return func (* args, ** kwargs)
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/db/models/fields/init.py" в get_db_prep_value 492. возврат соединения.ops.value_to_db_auto (значение)
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/djangotoolbox/db/base.py" в value_to_db_auto 68. return superperation, self) .value_to_db_auto (значение)
Файл "/home/eeyorexd/workspace/Python/appengine/something-to-say/somethingtosay/django/db/backends/init.py"in value_to_db_auto 485. return int (value)
Тип исключения: ValueError at / contrib / Exception Value: недопустимый литерал для int () с основанием 10: 'test'
MyВнутреннее чувство говорит мне, что проблема заключается где-то в том, как я сохраняю объект в базе данных.Может быть, часть внешнего ключа?Я не могу точно определить проблему, так как я недавно начал изучать Джанго.Связана ли эта проблема с Django-nonrel, использующим бэкэнд GAE?Кто-нибудь может сказать мне, где я ошибся здесь?