2015-06-01 40 views
2

我想用我在Django中創建的模型作爲視圖。我想在我的公司內部網站上顯示未完成流程的狀態。我在論壇上只找到了相當老的條目,那麼有沒有一種簡單的方法可以通過syncdb來傳遞MySQL視圖?如何在django中使用MySQL視圖?

如果不是這樣,假設我有兩個表:

  1. 子過程的硬writen里程碑,如:
  2. 表processess和子信息的ID從表上方: enter image description here

  3. 我在MySQL中的看法會做這樣的事情。 4)因此,結果將是:

我想只有一個模式在我的Django應用程序,結果4號。 什麼是最快的方法來得到這個?自定義SQL查詢?或者我需要有型號爲progress_tbproc_tb並將它們組合?我如何參考同一個表幾次(如在Access/MySQL中我有progress_tb作爲progress_tb_1等)?到目前爲止,我只知道如何進行過濾查詢,但是如何從連接表中「添加」幾列?我試圖從Django的「額外」的選項,但我不明白它是如何工作:(

回答

4

您可以在嵌套Meta類通過managed = False字段聲明指定視圖被Django的管理:

class MyViewModel(models.Model): 
    field1 = models.IntegerField() 
    [...] 

    class Meta: 
     managed = False 
     db_table = 'MyView' # your view name 

managed = False會導致python manage.py syncdb忽略模型後再同步。

+0

謝謝,我來試試明天!它甚至會工作,但認爲沒有被執行syncdb認可?我只是名在我看來,這些領域完全一樣嗎? – Jakub

+1

是的。它仍然可以在沒有'syncdb'操作的情況下運行。這就是'管理'字段的設計目的。你不需要像在你的視圖中一樣命名這些字段,但是如果這些字段有很好的可理解的名字,那麼你也許應該這樣做。如果要將視圖的字段名與Django模型的字段名分開,可以指定['db_column'參數](https://docs.djangoproject.com/en/1.8/ref/models/fields/#db-列)到你的領域的模型實例。例如'field1 = models.IntegerField(db_column ='super_crappy_field_name')' –

+0

所以我的MyViewModel如何知道「field1」實際上是「sub_Proc1_%」和「field2」是「sub_Proc2_%」(來自給定的例子)?因爲我確實抓住了那個。 – Jakub

相關問題