2015-05-10 3 views
-1

Я пытаюсь переопределить метод save() для моей модели статьи. Я делал то же самое несколько раз, и все было в порядке. Но за это время поднялась ошибка значения.Django model save() метод overriding cause ValueError

Мой класс: журнал

class Article(models.Model): 
    title = models.CharField(max_length=500) 
    body = models.TextField(max_length=50000) 
    url = models.CharField(max_length=500, null=True) 

    def save(self, *args, **kwargs): 
     self.url = self.title 
     self.url.lower() 
     self.url.replace(' ', '_') 
     super(Article, self).save(*args, **kwargs) 

Ошибка:

>>> a = Article("Title 1", "text") 
    >>> a.save() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/home/user/django/project/apps/articles/models.py", line 19, in save 
    super(Article, self).save(*args, **kwargs) 
    File "/home/user/.virtualenvs/dj18/local/lib/python2.7/site-packages/django/db/models/base.py", line 710, in save 
    force_update=force_update, update_fields=update_fields) 
    ... 

    File "/home/user/.virtualenvs/dj18/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 985, in get_prep_value 
    return int(value) 
ValueError: invalid literal for int() with base 10: 'Title 1' 
+1

Дайте модели descprtion и укажите, как вы создаете объект 'a' для лучшей ясности. – nu11p01n73R

+0

Является ли это целым полем и вы передаете строковый объект? –

+0

Попробуйте передать объект в упрощенную модель формы, чтобы увидеть список ошибок –

ответ

1

Вы создаете объекты в не Рекомендован метод. Вы должны быть specifiying the parameter names при присвоении значения, как

a = Article(title = "Title 1", body = "text") 
a.save() 

Здесь я указал, что название нового объекта должен быть установлен в Title 1,

И body будет установлен text

+0

@Vova Добро пожаловать :) Рад слышать, что это сработало. !! – nu11p01n73R

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