1

show_categoryの e コマース カタログのビューは、昨日完全に機能していました。たとえば、domain.com/category/necklaces に移動すると、show_categoryビューが呼び出され、ネックレス カテゴリにあるすべての製品が表示されます。これは、製品とカテゴリの 2 つのテーブルと、それらに関連付けられた「スルー」テーブルで実現されます。

だけを使用しsyncdbていましたが、新しい ManyToManyField を追加する必要があったため、Django South が関与し、それをインストールし、データベースを再作成し、django south を使用して移行を管理し、すべてをセットアップして、カテゴリと製品を追加し直しましたすべてがスムーズに進んだdjango管理者。SQL Workbench でデータベース自体をチェックしたところ、すべてが見事に見えました。昨夜のデータベースを完全に再現したものですが、現在は Django South を使用しています。

しかし、次に domain.com/category/necklaces に移動すると、私の 1 つのテスト ネックレス製品が一覧表示されているカテゴリ ページが表示されるはずでした。代わりに私はこれを得ました:

AttributeError at /category/necklaces/
'Category' object has no attribute 'product_set'

私のcatalog.views.pyでエラーが発生しています:

def show_category(request, 
                  category_slug, 
                  template_name="catalog/category.html"):
    c = get_object_or_404(Category, 
                          slug=category_slug)
    products = c.product_set.all()

しかし、問題は、これは昨夜からまったく変わっていないということです. データベースを確認したところ、はい、製品が存在し、はい、「スルー」テーブルはその製品をこのカテゴリに正しく接続しています。

私が見るべきアイデアはありますか?基本的に当時動作していたコードには触れていないので、エラーはデータベースのどこかにあると思いますが、データベースは非常にきれいに見えるので、言うのは難しいです。どんな助けでも大歓迎です。その間、私は自分の周りをつつきます。

4

1 に答える 1

3

今後の参考のために、コメントを回答として追加します。

related_name外部キー参照でa を使用した場合、django はデフォルトの関連名として提供され、カスタム関連名が優先されるため、_set機能しなくなります。_set

hereの使用に関するドキュメントrelated_name

于 2013-03-29T20:09:32.123 に答える