Группирует список продуктов по заказу с тегом шаблонной группы - PullRequest
0 голосов
/ 23 мая 2019

У меня проблемы с использованием тега шаблона {% regroup%} Django. Краткое резюме: мне удалось перечислить все мои заказы с их продуктами, заказанными в одном шаблоне. Так что, кажется, все работает нормально, выполнив следующее:

  1. Создать заказ
  2. Создание заказанных товаров
  3. Предоставление этих продуктов на заказ
  4. Отображение ежедневных заказов с их продуктами в том же шаблоне (также отфильтрованные по дате) в 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 ):

  • Продукт A
  • Продукт B

Карлос (order_id = 2):

  • Продукт X

Лора ( order_id = 1 ):

  • Продукт C (это будет продукт, добавленный при изменении заказа!)

Чтобы увидеть, что произошло, я зашел в раздел администратора и заметил, что этот новый продукт даже добавляется в измененный заказ (например, Продукт C, принадлежащий к order_id = 1). Так что, похоже, проблема при переходе от шаблона модификации к ежедневным заказам или что-то еще, чего я еще не заметил.

Буду признателен за помощь в этой теме.

Спасибо всем

1 Ответ

0 голосов
/ 24 мая 2019

Я уже сделал!

Кажется, что перегруппировка работает только тогда, когда у вас есть порядок словаря по атрибуту, который вы хотите перегруппировать! Это потому, что я получал заказы отдельно (см. Пример Laura (order_id = 1) дважды! См. Документацию django о встроенном шаблоне перегруппировки

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...