我有一个模型,该模型在“产品”表中有一个列类别,其中有一个条目“床”。
当我尝试获取类别或产品的列表(所有这些都具有名称,描述等)时,我唯一能得到的就是数字。
这是我的观点中的相关视图。py
{% for instance in prods %}
<li>{{ instance }}</li>
{% endfor %}
这是我在Django模板中用于显示数据的代码
<li>(2,)</li>
<li>(1,)</li>
但是,返回的所有内容(在查看网页时都是HTML格式)是
from oscar.core.loading import get_class, get_model
xroduct = get_model('catalogue', 'product')
应该返回更多的信息。名称,说明等。为什么没有通过我的视图返回此信息?
编辑:xroduct的定义方式:
$str = "GUJARAT (24)";
echo '<br />1.';
print_r(sscanf($str, "%s (%d)"));
echo '<br />2.';
print_r(preg_split('/[\(]+/', rtrim($str, ')')));
echo '<br />3.';
echo substr($str, strpos($str, '(')+1, strpos($str, ')')-strpos($str, '(')-1);
echo '<br />4.';
echo strrev(strstr(strrev(strstr($str, ')', true)), '(', true));
echo '<br />5.';
echo preg_replace('/(\w+)\s+\((\d+)\)/', "$2", $str);
答案 0 :(得分:1)
自从我们谈论django-oscar
以来,有很多事情要理解:
要从oscar检索模型,您需要使用get_model
,这是它们自己动态导入感兴趣模型的实现。
get_model
从https://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/models.py获取的模型中,由https://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/abstract_models.py定义
要列出产品及其信息,您需要执行以下操作:
from oscar.core.loading import get_model
Product = get_model("catalogue", "Product")
def list_products(request):
template = loader.get_template(...)
products = Product.objects.all()
context = {"products": products}
return HttpResponse(template.render(context))
在模板中,您可以简单地访问以下实例:
{% for instance in prods %}
<li>{{ instance.title }}</li>
{% endfor %}