Я действительно застрял с объединением двух таблиц.
У меня есть таблицы Item и Транзакции
class Item(models.Model):
category_choices = []
item_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
description = models.TextField()
category = models.CharField(max_length=100, choices=category_choices)
image = models.ImageField(upload_to='media')
stock = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
date_added = models.DateTimeField(default=timezone.now())
class Transactions(models.Model):
transaction_id = models.AutoField(primary_key=True)
order_id = models.UUIDField()
item_id = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='transactions')
quantity = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
transaction_date = models.DateTimeField(auto_now_add=True)
username = models.CharField(max_length=100)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
address_str = models.CharField(max_length=100)
address_plz = models.CharField(max_length=100)
address_place = models.CharField(max_length=100)
address_country = models.CharField(max_length=100, choices=[(name[1], name[1]) for name in countries])
Теперь я хочу отобразить шаблон с транзакциями и изображениями и информацией об элементах из модели Item. Я пытаюсь использовать prefetch_related, howeve rit не работает, и я не понимаю, как это должно быть решено.
def order_history(request):
if request.user.is_authenticated:
transaction = Transactions.objects.order_by('-transaction_date').\
filter(username=request.user).prefetch_related('item')
context = {'orders': transaction}
template_name = 'retail/order_history.html'
return render(request, template_name, context=context)
else:
raise Http404('You are not authorised')