Я прикреплю несколько скриншотов моего шаблона и панели администратора У меня есть история заказов в панели администратора, но когда я пытаюсь показать заголовок и изображение заказанного продукта в профиле пользователя в моем шаблоне, это не работает, и я получил запрос Извините за русские слова на моем сайте, я могу перескринить свои скриншоты, если вам это нужно.
модели.py
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT, related_name='orders', verbose_name='Заказы',
default=1)
username = models.CharField(max_length=50, verbose_name='Имя пользователя')
email = models.EmailField()
vk_or_telegram = models.CharField(max_length=255, verbose_name='Ссылка для связи', default='vk.com')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False, verbose_name='Оплачено')
class Meta:
ordering = ['-created',]
verbose_name = 'Заказ'
verbose_name_plural = 'Заказы'
def __str__(self):
return 'Заказ {}'.format(self.id)
def get_cost(self):
return sum(item.get_cost() for item in self.items.all())
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name='order', on_delete=models.CASCADE)
product = models.ForeignKey(Posts, related_name='order_items', on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2)
def __str__(self):
return '{}'.format(self.id)
def get_cost(self):
return self.price
просмотры.py
@login_required
def profile(request):
user_orders = Order.objects.filter(user=request.user)
data = {
'user_orders': user_orders,
}
return render(request, 'store/main_pages/profile.html', data)
шаблон истории заказов:
{% for item in user_orders %}
{{ item }}
{{ item.order.all }}
{% endfor %}
Если вы хотите добавить дополнительные детали к своему вопросу, отредактируйте и обновите вопрос. Не добавляйте комментарии с дополнительными разъяснениями.
Создайте модель для хранения заказов. Эта модель должна иметь поля для хранения информации о заказе, такой как общая стоимость, дата размещения заказа и статус заказа.
Создайте представление, которое будет отображать историю заказов для пользователя. Это представление должно извлекать все заказы вошедшего в систему пользователя из базы данных и передавать их в шаблон.
Создайте шаблон для отображения истории заказов. Этот шаблон должен перебирать список заказов, переданных ему представлением, и отображать соответствующую информацию для каждого заказа.
Добавьте шаблон URL-адреса в файл urls.py вашего проекта Django, который сопоставляется с представлением, отображающим историю заказов.
Добавьте ссылку на страницу истории заказов в меню навигации вашего приложения или в другом месте на сайте.
но у меня есть все модели для этого, проверьте "Заказ (модели.Модель)"
В user_orders = Order.objects.filter(user=request.user)
у вас есть все истории заказов пользователя.
при отправке этих данных на передний план не используйте {{ item.order.all }}
каждый из ваших предметов является заказом.
Вы имеете в виду, что мне нужно использовать только {{item}}? Но это тоже не работает
Я нашел решение, у OrderItem есть продукт, который является внешним ключом для моего продукта с заголовком, содержимым и изображением. Views.py изменен для:
@login_required
def profile(request):
user_orders = Order.objects.filter(user=request.user)
user_order_item = OrderItem.objects.all()
data = {
'user_orders': user_orders,
'user_order_item': user_order_item,
}
return render(request, 'store/main_pages/profile.html', data)
Шаблон:
{% if user_orders %}
{% for item in user_order_item %}
<p>{{ item.product.title }}</p>
<p><img src = "{{ item.product.photo.url }}" alt = ""></p>
% endfor %}
{% endif %}
``` user_order_item = OrderItem.objects.all() ``` возвращает все элементы заказа, а не элементы заказа пользователя.
у меня есть user_orders с фильтром, а затем в шаблоне я проверяю это, если вы не видели
Я просто хочу получить все заказы с названием продукта и его img