Как напечатать данные модели в шаблоне djnago?

У меня есть модель с именем item следующего содержания:

class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
bargainprice = models.FloatField(default=0)
discount_price = models.FloatField(blank=True, null=True)
category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
label = models.CharField(choices=LABEL_CHOICES, max_length=1)
slug = models.SlugField()
description = models.TextField()
image = models.ImageField()

у меня есть модель под названием Bargain следующим образом:

class Bargain(models.Model):
  user = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    on_delete=models.CASCADE
     )
  item = models.ForeignKey(
    Item,
    on_delete=models.CASCADE
     )
  bprice = models.FloatField()
  class Meta:
    constraints = [
        models.UniqueConstraint(
            fields=['item', 'user'], name='unique_user_item')
    ]

и я передаю эти данные модели в шаблоне "product.html" следующим образом;

class ItemDetailView(DetailView):
model = Item
template_name = "product.html"

def get_bargain(self, request):
    if request.user.is_authenticated():
        print("this is the user ", self.user.pk)
        return Bargain.objects.filter(item=self.object, user=request.user).first()

и я хочу получить доступ к "bprice" в шаблоне "product.html", поэтому я делаю это в шаблоне :

Это Bprice :{{ view.get_bargain.bprice }}

но **он ничего не показывает ** и у меня также есть один объект в модели сделки под названием "Bargain object(3) со всеми необходимыми значениями пример : user: admin item:mattalicdot bprice:1799 и я зарегистрирован под пользователем admin .

может ли кто-нибудь сказать мне, в чем проблема?

При использовании детального представления, когда представление рендерится, оно передает объект в контекст страницы. В вашем шаблоне вы должны просто сказать {{ object.attribute_field }}, где attribute_field - это имя поля объекта, которое вы хотите отобразить, в вашем случае это будет object.bprice, чтобы иметь возможность отобразить значение.

Вернуться на верх