0

だから私は次のようなモデルを持っています

class Category(SmartModel):
    item=models.ManyToManyField(Item)
    title=models.CharField(max_length=64,help_text="Title of category e.g BreakFast")
    description=models.CharField(max_length=64,help_text="Describe the category e.g the items included in the category")
    #show_description=check box if description should be displayed
    #active=check box if category is still avialable
    display_order=models.IntegerField(default=0)
    def __unicode__(self):
        return "%s %s %s %s " % (self.item,self.title, self.description, self.display_order)

ご覧のとおり、多対多のフィールドがあります

item=models.ManyToManyField(Item) 

テンプレート内のすべてのアイテムを返したいのですが、これが私のviews.pyです。

def menu(request):
    categorys= Category.objects.all()
    items= categorys.all().prefetch_related('item')
    context={
        'items':items,
        'categorys':categorys
    }
    return render_to_response('menu.html',context,context_instance=RequestContext(request))

これがテンプレートでどのように行われているのか、

    <ul>
{% for item in items %}
 <li>{{ item.item }}

 </li>
</ul>
{% endfor %}

結局のところ、これは私のWebページに返されるものです。

<django.db.models.fields.related.ManyRelatedManager object at 0xa298b0c>

私は何を間違っているのですか、私は本当に周りを見回しましたが、すべて無駄でした、あなたが私を助けてくれることを願って、事前にあなたに感謝します

4

2 に答える 2

0

使用してみてください:

categorys= Category.objects.prefetch_related('item').all()

そして、テンプレートで:

{% for category in categorys %}
    {% for item in category.item.all %}
        {{ item }}
    {% endfor %}
{% endfor %}
于 2012-12-06T07:44:04.253 に答える
0

まさに、あなたには多対多のマネージャーがいます。あなたは実際に何かをクエリする必要があります...のようにall()

{% for item in items %}
   {% for i in item.item.all %}
        {{ i }}
   {% endfor %}
{% endfor %}

変数の命名に基づいて、 sのprefetch_related束としての結果を混乱させていると思います。item実際には、CategoryオブジェクトのQuerySetを返しています。

したがって、それらをカテゴリと呼ぶ方が直感的です。

{% for category in categories %}
   {% for item in category.item.all %} 
       {{ item }} {# ...etc #}
于 2012-12-06T08:15:52.507 に答える