我有一排产品,它们倾向于共享一些信息,例如相同的图像(一个图像可能显示多个产品),说明,制造商等。
我想选择一些字段以仅显示一次信息。我不能为此使用“不相同”(我不认为),因为信息并不总是相同,例如与描述相同,但可能只是微妙的不同,以至于我不想重复。
此刻,我正在使用for循环显示每个结果中的字段,最终结果如下:
这是我在视图中使用的代码:
def collection_detail(request, name=None):
template = loader.get_template('/webapps/mywebapp/furniture/main_page/templates/main_page/detail.html')
products = product.objects.filter(id=name)
cart_product_form = CartAddProductForm()
context={'products': products,
'cart_product_form': cart_product_form}
return HttpResponse(template.render(context))
在视图中执行此操作的适当方法是什么,而忽略某些字段的后续行?
编辑:示例查询集结果
collection_name|manufacturer|product_type|description|image_url
----------------------------------------------------------------
Testing |FakeCo |Bed |pretty nice|/img/1.jpg
Testing |FakeCo |Desk |pretty bad |/img/2.jpg
Testing |FakeCo |Nightstand |pretty ok |/img/1.jpg
Testing |FakeCo |Draws |pretty nice|/img/3.jpg
在上述数据的示例中,我只想显示集合名称和制造商一次,因此第一个结果将起作用,每种产品类型,不管其内容如何,都应具有第一个描述,并且每个图像都不同且不是重复的。
答案 0 :(得分:0)
以此
products = product.objects.filter(id=name)
它将返回一个查询集,这意味着它包含多个产品信息。 如果您只想获取单个对象的信息,请更改查询,如下所示:
products = product.objects.filter(id=name).first()
or,
products = product.objects.filter(id=name)[:1]
更新 如果要显示某些字段,请使用一个值:
{{ value|first }}
答案 1 :(得分:0)
from collections import defaultdict
import pandas as pd
dict_for_df = defaultdict(list)
last_find = None
last_date = None
with open("test.txt",'r') as f:
for line in f.readlines():
curr_find = line.find("/")
if line == "\n":
continue
elif curr_find == 2:
Date = line.replace("\\n","").strip()
dict_for_df['DateOfWritten'].append(Date)
last_date = Date
last_find = 2
elif (last_find == 2 and curr_find != 4):
dict_for_df['Date'].append(last_date)
dict_for_df['text'].append(line.replace("\n","").strip())
last_find = 0
last_date = ''
elif curr_find == 4:
dict_for_df['Date'].append(line.replace("*","").replace("\n","").strip())
last_date = ""
last_find = None
else:
dict_for_df['text'].append(line.replace("\n","").strip())
last_date = ""
last_find = None
df = pd.DataFrame(dict_for_df)
时间不长,但可以解决您的问题。 “设置”将使所有通用名称一次出现在列表中。