Django でちょっとハマったのでメモ。
コードとエラー
models.py
from django.db import models
class Foo(models.Model):
title = models.CharField(name='タイトル')
content = models.TextField(name='内容')
def __str__(self):
return self.title
Shell
~/path/to/proj $ python manage.py shell
...
>>> from bar.models import Foo
>>> foo = Foo()
>>> foo.title = "Hoge"
>>> foo.content = "Fuga"
>>> foo.save()
>>> Foo.objects.all()
Traceback (most recent call last):
File "<console>", line 1 in <module>
...
File "/path/to/proj/bar/models.py", line 8, in __str__
return self.title
AttributeError: 'Foo' object has no attribute 'title'
>>> exit()
解決策
models.py
from django.db import models
class Foo(models.Model):
title = models.CharField(verbose_name='タイトル')
content = models.TextField(verbose_name='内容')
def __str__(self):
return self.title
name='タイトル'
, name='内容'
を
verbose_name='タイトル'
, verbose_name='内容'
にしたら直った。
また name='タイトル'
, name='内容'
のままで __str__
を
models.py
...
def __str__(self):
return self.タイトル
に変えてもAttributeError
が出なくなった。