2013-07-21 2 views
2

Пытается создать объект с помощью get_or_create(). Ответ ударяет, но он никогда не создает объект.get_or_create не создает объект из формы POST

Python код:

class Note(models.Model): 
    user = models.ForeignKey(User) 
    topic = models.CharField(max_length=500, null=True, blank=True) 
    created = models.DateTimeField(auto_now_add=True) 
    content = models.TextField(null=True, blank=True) 
    type = models.ForeignKey(NoteType, null=True, blank=True) 

    def __unicode__(self): 
     return self.topic 

def post(request): 
    topic = request.POST['topic'] 
    user = request.user 
    content = request.POST['content'] 
    note_type = request.POST['type'] 

    note, created = Note.objects.get_or_create(user=user, topic=topic, content=content, type=note_type) 

    return HttpResponseRedirect('/home/') 

Так исключение постоянно попадал и никогда не создает объект. У меня все нормально, и я импортирую модель. Любая причина, по которой этот объект не создается? Нет ошибок, он просто перенаправляется, как обычно.

отслеживающий:

Environment: 


Request Method: POST 
Request URL: http://localhost:8000/post/ 

Django Version: 1.5.1 
Python Version: 2.7.5 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'notes') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "c:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    115.       response = callback(request, *callback_args, **callback_kwargs) 
File "c:\Python27\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view 
    25.     return view_func(request, *args, **kwargs) 
File "c:\Users\Alana\project-fridge\notes\views.py" in post_note 
    34.  note, created = Note.objects.get_or_create(user=user, topic=topic, content=content, type=note_type) 
File "c:\Python27\lib\site-packages\django\db\models\manager.py" in get_or_create 
    146.   return self.get_query_set().get_or_create(**kwargs) 
File "c:\Python27\lib\site-packages\django\db\models\query.py" in get_or_create 
    470.    return self.get(**lookup), False 
File "c:\Python27\lib\site-packages\django\db\models\query.py" in get 
    379.   clone = self.filter(*args, **kwargs) 
File "c:\Python27\lib\site-packages\django\db\models\query.py" in filter 
    655.   return self._filter_or_exclude(False, *args, **kwargs) 
File "c:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude 
    673.    clone.query.add_q(Q(*args, **kwargs)) 
File "c:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q 
    1266.        can_reuse=used_aliases, force_having=force_having) 
File "c:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_filter 
    1197.     connector) 
File "c:\Python27\lib\site-packages\django\db\models\sql\where.py" in add 
    71.    value = obj.prepare(lookup_type, value) 
File "c:\Python27\lib\site-packages\django\db\models\sql\where.py" in prepare 
    339.    return self.field.get_prep_lookup(lookup_type, value) 
File "c:\Python27\lib\site-packages\django\db\models\fields\related.py" in get_prep_lookup 
    143.    return self._pk_trace(value, 'get_prep_lookup', lookup_type) 
File "c:\Python27\lib\site-packages\django\db\models\fields\related.py" in _pk_trace 
    216.   v = getattr(field, prep_func)(lookup_type, v, **kwargs) 
File "c:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_lookup 
    322.    return self.get_prep_value(value) 
File "c:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value 
    555.   return int(value) 

Exception Type: ValueError at /post/ 
Exception Value: invalid literal for int() with base 10: 'text' 

Благодарим Вас за помощь заранее.

+0

@AdamKG возвращает 'недействителен буквальным для междунар() с базой 10: «текст» ..? – Modelesq

+0

@Modelesq Обновите вопрос с помощью текущего кода и включите полную трассировку (на странице с ошибкой должен быть «переключатель для копирования/вставки»). – AdamKG

+0

@AdamKG обновлен! – Modelesq

ответ

0

Я предполагаю, что вы храните список различных типов банкнот в модели NoteType ...

Чтобы сделать этот код работать, вы первый будете нуждаться, чтобы получить один из них от этой модели, а затем установить использовать, что при создании вашей новой ноты

note_type = request.POST['type'] 

note_type_orm = NoteType.objects.get(type=note_type) 

note, created = Note.objects.get_or_create(user=user, topic=topic, content=content, type=note_type_orm) 

Обратите внимание на изменения в get_or_create, что я сейчас с помощью note_type_orm и не только note_type (это просто строка)

Смежные вопросы