2017-06-13 62 views
0

我有兩個模型,如下所示。django函數裏面的模型,顯示結果裏面的模板

PRODUCT_TYPE=(('TL','Tubeless Tyre'), ('TT','Tubed Tyre'), ('NA','Not applicable')) 
class Product(models.Model): 
    product_group=models.ForeignKey('productgroup.ProductGroup', null=False,blank=False) 
    manufacturer=models.ForeignKey(Manufacturer, null=False,blank=False) 
    product_type=models.CharField(max_length=2, choices=PRODUCT_TYPE,) 

    opening_stock=models.PositiveIntegerField(default=0) 

    def __str__(self): 
     return '%s (%s, %s, %s) o.stock = %d ' % (self.product_group, self.manufacturer, self.product_type ,self.opening_stock) 

     unique_together = ('product_group', 'manufacturer','product_type') 
    def get_total_stock_in(self): 
     Stock.objects.filter(product=self.id,ttype='I').aggregate(Sum('quantity')) 
    def get_total_stock_out(self): 
     Stock.objects.filter(product=self.id,ttype='I').aggregate(Sum('quantity')) 

TRANSACTION_TYPE=(('I','Stock In'),('O','Stock Out')) 
class Stock(models.Model): 
    product=models.ForeignKey('product.Product', blank=False,null=False) 
    date=models.DateField(blank=False, null=False,) 
    quantity=models.PositiveIntegerField(blank=False, null=False) 
    ttype=models.CharField(max_length=1,verbose_name="Ttransaction type",choices=TRANSACTION_TYPE, blank=False) 
    added_date=models.DateTimeField(blank=False, auto_now=True) 
    def get_absolute_url(self): 
     return reverse('product_detail', args=[str(self.product.id)]) 
    def __str__(self): 
     return ('[%s] %s (%s) %d' %(self.product, self.date, self.ttype, self.quantity)) 

和一個視圖

class ProductList(ListView): 
    model=Product 

我的目的是有兩個functions get_total_stock_in()functions get_total_stock_out()查找每個產品的所有stock_ins和stock_outs的總和並顯示結果在模板中product_list.html

爲此,我有

<ul> 
     {% for product in object_list %} 
      <li><a href="{%url 'product_detail' product.id %}">{{ product.product_group}}-{{ product.product_type}} 
       {{ product.manufacturer}} </a> 
       opening.stock: <b>{{ product.opening_stock}} </b>, 
       total s/i: {{product.get_total_stock_in.quantity__sum}} , 
       total s/o: {{product.get_total_stock_out.quantity__sum}} 
      </li> 
     {% endfor %} 
    </ul> 

我不知道如何得到想要的結果。

任何幫助,將不勝感激。

謝謝。

+0

除了在get_total_stock_out方法中使用類型I而不是O之外,您有什麼問題?當您嘗試此代碼時會發生什麼? –

+0

我得到的輸出爲空 – art06

+0

如果你還有一個問題,你應該問它作爲一個新的問題完成你試過和研究 – Sayse

回答

1

你的方法實際上不會返回任何東西 - 它們會計算總和,但將它們扔掉。 Python需要明確的return聲明。

+0

非常感謝您的快速響應! – art06