0
我有一個Django模型,它有一個可選的外鍵。我這樣設置它,以便表格包含不同service_types
的默認選項,但可以通過指定controller
外鍵來覆蓋此選項。默認選項的Django模型管理器
現在,在我的觀點我有一大堆的代碼看起來像這樣:
try:
modeService = RegressionServices.objects.get(controller=controller, service_type=SERVICE_TYPE_CONTROLLER_MODE)
except RegressionServices.DoesNotExist:
modeService = RegressionServices.objects.get(service_type=SERVICE_TYPE_CONTROLLER_MODE)
我想減少這種下降到一個電話,我覺得一個Django模型Manager
應該做的方式所以。本質上它會檢查**kwargs
中的控制器,如果存在,它將基本上執行上面的代碼。我正在查看文檔,只發現get_query_set
方法通常被覆蓋。重寫get()
方法可以嗎?我是否可以在模型管理器get()
方法中訪問RegressionServices
模型?
任何人都可以想辦法做到這一點,而不是模型管理器?
如果''RegressionServices''有兩個具有相同服務類型(它會)的條目,一個帶有控制器FK,另一個帶有''MultipleObjectsReturned'異常,因此不起作用。 – Randy 2012-04-09 18:42:13
如果可能返回多個對象,請不要使用get或捕獲異常並作出相應的響應。在你的情況下,你可能應該使用帶下標語法的'filter'來施加限制(例如'RegressionServices.objects.filter(...)[0]')並捕獲IndexError以確保至少返回一個項目。 – 2012-04-09 21:49:09