【发布时间】:2014-03-25 11:51:24
【问题描述】:
目前正在使用 Tango with Django 书作为参考。我的数据库中有一堆产品,这些产品属于外键关系引用的类别。我似乎在返回产品视图时遇到了问题,该视图包含有关该特定产品的所有信息。
示例:数据库中有两台戴尔笔记本电脑、一台 iPhone 和两台 iPad。 iPhone 将返回产品信息,但对于 iPad 和戴尔笔记本电脑,它将返回消息 "get() returned more than one Product -- it returned 2!",这当然意味着它找到了两个具有相似匹配名称的产品。我尝试将name__icontains 中的name__icontains 更改为name__iexact,但随后它完全停止工作,我是否遗漏了一些非常明显的东西?就像我一样。
url(r'^products/(?P<category_name_url>\w+)/$', views.category_view, name='category_view'),
url(r'^products/(?P<category_name_url>\w+)/(?P<product_name_url>\w+)', views.product_view, name='product_view')
def category_view(request, category_name_url):
context = RequestContext(request)
category_list = Category.objects.order_by('name')
category_name = category_name_url.replace('_', ' ')
context_dict = {'category_name': category_name,
'categories': category_list}
try:
category = Category.objects.get(name__iexact=category_name)
product = Product.objects.filter(category=category)
context_dict['product'] = product
context_dict['category'] = category
except Category.DoesNotExist:
pass
return render_to_response('category_view.html', context_dict, context)
def product_view(request, category_name_url, product_name_url):
context = RequestContext(request)
category_list = Category.objects.order_by('name')
category_name = category_name_url.replace('_', ' ')
product_name = product_name_url.replace('-', ' ')
context_dict = {'category_name': category_name,
'product_name': product_name,
'categories': category_list}
try:
category = Category.objects.get(name__iexact=category_name)
product = Product.objects.get(name__icontains=product_name)
context_dict['category'] = category
context_dict['product'] = product
except Product.DoesNotExist:
pass
return render_to_response('product_view.html', context_dict, context)
【问题讨论】:
标签: django python-3.x django-views