Получение всех данных из запроса

Я продолжаю бороться с Django Model, отношениями менеджеров.

У меня есть модель профиля, модель продукта и модель холдинга.

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)
    products = models.ManyToManyField(Product, blank=True, through='Holding')


    def __str__(self):
        return str(self.user)



class Product(models.Model):

    product_name = models.CharField(max_length=255, blank=False, unique=True)
    product_slug = models.CharField(max_length=50, blank=True,null=True)
    product_symbol = models.CharField(max_length=50, blank=True,null=True)
    product_price = models.FloatField(blank=True,null=True)


    def __str__(self):
        return str(self.product_name)


class Holding(models.Model):

    product_name = models.ForeignKey(Product, on_delete=models.CASCADE)
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
    product_holding = models.FloatField(max_length=50, blank=True, null=True)

    def __str__(self):
        return str(self.product_name)

Я пытаюсь получить данные от пользователя (Profile) для продукта внутри Holding В основном я хочу показать количество продукта, который пользователь держит в данный момент.

Я делаю это с моей точки зрения

def show_product_details(request, product_name):
    product = product.objects.get(Product_name=product_name)
    ...

    profile = Profile.objects.get(user = request.user)
    product_holding = profile.holding_set.get(product_name__product_name = product_name)

     return render(request, 'productdetails.html', {'product_holding':product_holding ...}

Но это возвращает не все данные, а только product_name.

Что я делаю не так? :(

)

В строке

product_holding = profile.holding_set.get(product_name__product_name = product_name)

Вы обращаетесь к модели Product (поле product_name в модели Holding), а затем из этой модели обращаетесь к полю "product_name", которое соответствует

product_name = models.CharField(max_length=255, blank=False, unique=True)

в модели продукта. Таким образом, вы получаете только его название.

Если вы хотите получить все данные модели, то используйте только:

product_holding = profile.holding_set.get(product_name = product_name)

И вы можете получить доступ к каждому полю, используя

{{product_name.product_name}}
{{product_name.product_price}}
Вернуться на верх