У меня проблемы с использованием тега шаблона {% regroup%} Django.
Краткое резюме: мне удалось перечислить все мои заказы с их продуктами, заказанными в одном шаблоне. Так что, кажется, все работает нормально, выполнив следующее:
- Создать заказ
- Создание заказанных товаров
- Предоставление этих продуктов на заказ
- Отображение ежедневных заказов с их продуктами в том же шаблоне (также отфильтрованные по дате) в dailyorders.html
Здесь мои коды и только я покажу код, который позволяет мне отображать заказы и изменять один, если я хочу (где у меня проблема)
Модель:
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 ):
- Продукт C (это будет продукт, добавленный при изменении заказа!)
Чтобы увидеть, что произошло, я зашел в раздел администратора и заметил, что этот новый продукт даже добавляется в измененный заказ (например, Продукт C, принадлежащий к order_id = 1). Так что, похоже, проблема при переходе от шаблона модификации к ежедневным заказам или что-то еще, чего я еще не заметил.
Буду признателен за помощь в этой теме.
Спасибо всем