簡體   English   中英

外鍵 django - 數據庫關系

[英]Foreign key django - Database Relationships

我有一個 model 產品香水,產品有不同的數量和價格。 我需要為每個渲染數量和價格,但我得到“'function' object has no attribute 'prices'”

有任何想法嗎? 我很感激任何建議

看法:

from django.shortcuts import render

from django.views.generic import View, TemplateView
from products.models import Perfume, Pricing



def getIndex(request):
    
    
    perfumes = Perfume.objects.all
    thePrice= perfumes.prices.all()
    
    
   

    return render(request, 'index.html', {'perfumes': perfumes, 'thePrice':thePrice})

Model

from django.conf import settings
from django.db import models
from django.utils import timezone


class Perfume(models.Model):
  
    genderChoice = (
        ('unisex','unisex'), ('male', 'male'), ('female', 'female'))
         
   
         
    name = models.CharField(max_length=50, default='')
    brand = models.CharField(max_length=40, default='')
    gender = models.CharField(max_length=7, choices=genderChoice, default='unisex')
    

    description = models.TextField()
    image = models.ImageField(upload_to='images/product_image')
    created = models.DateField()
    author =models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    active = models.BooleanField(default=False)
    show_for_consumer = models.BooleanField(default=False)

    def __str__(self):
        return self.name        


class Pricing(models.Model):
    product =models.ForeignKey(Perfume, on_delete=models.CASCADE,related_name='prices')
    
     
    price= models.DecimalField(max_digits=10, decimal_places=2)
    volume= models.DecimalField(max_digits=10, decimal_places=2)
    def __str__(self):
         return 'Perfume {} - Price{} - Volume {}'.format(self.product.name,self.price, self.volume)

首先,您需要更正獲取香水查詢集時缺少的()

perfumes = Perfume.objects.all()

thePrice = perfumes.prices.all()是不正確的。 您必須為每種香水都這樣做,而不是為queryset查詢集。

由於PerfumePricing具有一對多的關系,您可以直接訪問每個香水實例的價格。 這樣你只需要傳遞香水queryset

def getIndex(request):
    perfumes = Perfume.objects.all()
    return render(request, 'index.html', {'perfumes': perfumes})

最后,在您的模板中,您可以像這樣調用價格

{% for product in perfumes %}
  ...
  {% for p in product.prices.all %}
    <option>{{p.volume}}ml - {{p.price}}$ </option>
  ...
  {% endfor %}
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM