2017-06-21 31 views
-1

多個模型我有這三類Django的 - 更新從一個視圖(形式表)

class Product(models.Model): 
    name  = models.CharField(max_length=50) 

class Input(models.Model): 
    idProduct = models.ForeignKey('Product', on_delete=models.CASCADE) 
    quantity = models.IntegerField() 
    price  = models.DecimalField(max_digits=5, decimal_places=2) 
    created_at = models.DateTimeField(auto_now=True) 

class Output(models.Model): 
    idProduct = models.ForeignKey('Product', on_delete=models.CASCADE) 
    quantity = models.IntegerField() 
    created_at = models.DateTimeField(auto_now=True) 

我whant做出視圖/表格這樣

| output-quantity->product | product-name | input-quantity->product | 

名單表所有來自DB的產品併爲每個產品添加數量(輸入或輸出)

接下來,我總結輸入和輸出,然後減去它們以獲得每個產品的庫存記錄。

我的問題是我不明白我怎麼可以在視圖中同時使用三種型號/形成

+0

到目前爲止,您嘗試了什麼?請顯示您的查看代碼。 – Soviut

+0

你可以,你可以在這裏分享你的看法 – Cadmus

+0

我不知道該怎麼做。 我沒有在網上哪裏可以使用多種模型在同一視圖 –

回答

0

要訪問模型視圖中的所有你必須做的是導入這樣的(前提是你已經按照Django結構):from .models import Product, Input, Output。您現在可以訪問這些模型。

現在使用諸如Products.objects.all()之類的函數來獲取所需的數據,例如該命令將返回保存在數據庫中的所有Product對象。有關Django查詢的更多信息,請閱讀此處:https://docs.djangoproject.com/en/1.11/topics/db/queries/

+0

謝謝你的輸入 我想我理解找到一個例子,現在 '選擇product.name, SUM(input.quantity) - SUM(output.quantity)作爲庫存 從產品 \t加入輸入ON(product.id = input.idProduct) \t由產物加入輸出ON(product.id = output.idProduct) 組由product.name 順序。名稱' 我必須將這個SQL翻譯成django orm。 小問題的理解:select_related,annotate,aggregate –

+0

我認爲你可以通過基本過濾器和獲取語句來獲得你想要的位置,嘗試將SQL分解成塊,以便更容易處理。 Select_related預填充任何外鍵,因此在嘗試訪問它們時不必重新查詢,從而提高性能。 –