@darkglare

Как вывести название продукта?

Здравствуйте.

Есть задача, выводить список заказанных товаров. На данный момент выводится информация просто о заказе. (id например). Теперь нужно добавить вывод название заказанного продукта. Нужно что-то прописать во views, но ума не приложу что именно

models.py
from django.db import models
import django
from shop.models import Product
from django.contrib.auth.models import User

    class Order(models.Model):
    nickname = models.ForeignKey(User, on_delete=models.CASCADE, default=False)
    product = models.ForeignKey(Product, on_delete=models.CASCADE, default=False)
    
    email = models.EmailField()
    
    postal_code = models.CharField(max_length=20)
    city = models.CharField(max_length=100)
    street = models.CharField(max_length=100, default="s")
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    paid = models.BooleanField(default=False)

    class Meta:
        ordering = ('-created',)
        verbose_name = 'Заказ'
        verbose_name_plural = 'Заказы'

    def __str__(self):
        return 'Order {}'.format(self.id)

    def get_total_cost(self):
        return sum(item.get_cost() for item in self.items.all())


views.py
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.nickname = request.user

       "Вот здесь ,мне кажется, нужно что-то написать, для привязки id продукта к конкретному пользователю"

            order.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            # очистка корзины
            cart.clear()
            return render(request, 'orders/order/created.html',
                          {'order': order})
    else:
        form = OrderCreateForm
    return render(request, 'orders/order/create.html',
                  {'cart': cart, 'form': form})


Здесь передается в шаблон информация о заказе, внимание, о самом заказе, о его наличии. Не имя продукта ,которое нужно.
def my_orders(request):
    orders = Order.objects.filter(nickname=request.user)

    "Здесь тоже нужно добавить переменную, которая бы запрашивала конкретный id товара"

     pdoruct = ...........
    
    assert isinstance(request, HttpRequest)
    return render(
        request,
        'app/my_orders.html', {'orders': orders,}
         )


my_orders.html
{% for order in orders %}
<ul>
    <li>
        {{order.id}}
    </li>
    <li>
        {{order}}
    </li>
</ul>
{% endfor %}


Нужно,чтобы помимо ID заказа , передавалось и наименование заказанного товара.
Прошу, подскажите.
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
syschel
@syschel
freelance/python/django/backend
{% for order in orders %}
<ul>
    <li>
        {{ order.id }}
    </li>
    <li>
        {{ order.product }}
    </li>
    <li>
        {{ order.product.name }}
    </li>
</ul>
{% endfor %}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы