2012-03-28 41 views
2

有沒有方法可以訪問models.py中的request.user或信號處理程序中的?Django在models.py或信號處理程序中登錄用戶

我正在使用m2m_changed信號並將其定義在我的models.py中 - 我想訪問登錄的用戶。

有沒有辦法做到這一點?

+1

你需要什麼信息?您必須以某種方式將此數據傳遞給模型層,並且適當的解決方案取決於數據將如何使用。 – 2012-03-28 22:20:52

+0

我想在我創建的通知中使用它 - 即。在這種情況下的'演員'是登錄用戶。 – 2012-03-28 22:43:23

回答

1

我假設用戶進行更改不一定是記錄所有者或作者。這意味着模型查找毫無用處,您需要通過信號傳遞這些數據。

好方法是創建自定義信號,將當前用戶作爲屬性之一,並在保存數據時將其發送到視圖代碼中。

+0

完美 - 正是我所需要的 - 謝謝! – 2012-03-28 22:57:25

+0

其實 - 有沒有辦法擴展m2m_changed - 我真的需要post_add發送信號給m2m_changed,但我想訪問request.user there – 2012-03-28 23:33:16

+0

不,你不能真正修改現有的信號,除非你改變每一個地方它發出的代碼。你可以做的是將request.user分配給視圖代碼中的某個模型屬性,然後在信號處理程序中檢查它。請記住,如果不同視圖修改數據或根本沒有視圖級別(腳本,後臺任務等),它將不會存在。 – 2012-03-28 23:47:25