我在使用{%regroup%} Django模板标记时遇到了问题。 简要摘要:我成功列出了所有订单以及在同一模板中订购的产品。所以一切似乎都可以很好地执行以下操作:
这里是我的代码,只有我将显示代码,该代码使我可以显示订单并在需要时修改订单(我有问题的地方)
型号:
class Productsordered (models.Model):
item = models.ForeignKey(Itemlist, on_delete=models.CASCADE)
order = models.ForeignKey(Orders, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
def __str__(self):
return f"{self.quant} - {self.item.nombre_producto}"
class Orders(models.Model):
date = models.DateField(default=date.today)
client_name = models.CharField(max_length=30) (just name, not client id)
def __str__(self):
return self.client_name
class Itemlist(models.Model):
id = models.SlugField(primary_key = True, max_length =30)
name_item = models.CharField(max_length=30)
price = models.IntegerField()
每日订单并修改订单视图:
def show_daily_orders(request,**kwargs):
daily_products_ordered =
Productsordered.objects.filter(order__date__day=date.today().day,
order__date__month=date.today().month,
order__date__year=date.today().year)
return render(request,'dailyorders.html',{'daily_products_ordered':daily_products_ordered})
def add_products_ordered (request,pk_order,pk_item):
products_ordered=Productsordered.objects.filter(order=pk_order)
get_order=Orders.objects.get(id=pk_pedido)
list= Itemlist.objects.all()
#ask if the product is already there, if not create one
try:
product = products_ordered.get(item=pk_item)
product.quantity += 1
product.save()
except:
newproduct = Itemlist.objects.get(id=pk_item)
newproduct = Productsordered.objects.create(item=newproduct, order=get_order)
product.save()
return render(request,'modify.html',{'list':list,'products_ordered':products_ordered,'order':order})
dailyorders.html类似于:
{% regroup daily_products_ordered by order as order_list %}
{% for order in order_list %}
<h2> {{order.grouper}}
{% for product in order.list %}
<li> {{product.quantity}} - {{ product.item.name_item }}</li>
<a class = 'btn' href="{% url 'go_to_modify_order' pk=order.grouper.id %}">Modify order</a>
{% endfor %}
{% endfor %}
modify.html
{% for prod in list %}
<a class="btn" href="{% url 'go_to_modify_order' pk_item=prod.id pk_order=order.id %}">{{prod.name_item}}</a>
{% endfor %}
<a class="btn" href="{% url 'go_to_orders' pk_item=prod.id pk_pedido=order.id %}"> Finish modifying order </a>
# Also there would be the choice to delete an added product, but no matter for the problem.
问题是,当我返回所有订单的模板时,当我尝试修改订单并添加新产品(只需单击按钮并将其添加到购物车)时,重新组合就好像该新产品一样是来自另一个订单。例如:
劳拉( order_id = 1 ):
卡洛斯(order_id = 2):
劳拉( order_id = 1 ):
为了查看发生了什么,我进入了admin部分,注意到该新产品甚至被添加到我修改的订单中(例如,产品C属于order_id = 1)。因此,当从修改模板传递到每日订单或其他我还没有注意到的问题时,这似乎是一个问题。
我希望在这个主题上有所帮助。
谢谢大家
答案 0 :(得分:0)
我已经做完了!
似乎重新组合仅在按要重新组合的属性确定字典顺序时才有效!那是因为我要分别获得订单(请参阅示例劳拉(order_id = 1)两次)!请参阅有关重新组合内置模板的django文档