3

最近、モデル「ニュース」に新しいメソッドを追加しました。

def slug(self):
    return slugify(self.title)

しかし、どこからでも呼べないようです。nというニュースオブジェクトがあると想像してください。電話をかけようとするとき

n.slug()

私はいつも次のようなエラーが発生します:

AttributeError: 'News' object has no attribute 'slug'

私はDjangoとPythonの完全な初心者であり、これは私の側のばかげた間違いだと確信しています。ちなみに、メソッドを追加した後、開発サーバーを再起動してデータベースを同期しようとしましたが、どちらも変更はありません。私は以前にこのようなモデルメソッドを問題なく使用したことに注意してください:S

編集:

モデルは次のとおりです。

from django.template.defaultfilters import slugify

class News(models.Model):
    title = models.CharField(max_length=100)
    [...]
    def slug(self):
        return slugify(self.title)

これは、メソッドの呼び出し方法に関するサンプルコードです。最初にテンプレートで呼び出しようとしましたが、機能しませんでした。次に、ビューを変更して、スラッグを返すだけにしましたが、エラーは残ります。シェルで試してみると同じです。

from fbki.models import News

def news_detail(request, slug, news_id):
    news = News.objects.get(id = news_id)
    return HttpResponse(news.slug())
4

2 に答える 2

0

これに似たエラーがいくつかありました。

問題は、モデルとデータベース内の実際のスキーマとの間の不一致であると思います。

実行manage.py sql myappして、内容が sql> show schema (など) の内容と一致することを確認します。

一致しない場合は、SQL クライアントを使用して古いテーブルを削除し、再実行manage.py syncdbして再度一致させる必要があります。

スキーマが存在すると、メソッドが機能するはずです。

于 2013-07-18T02:26:21.900 に答える