Получение всех данных из запроса
Я продолжаю бороться с 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}}