我失去了:(使用登錄的用戶找到相關的模型在Django
我仍然在努力學習Django的,並已決定繼續前進,只使用基於類的意見,因爲基於函數的觀點我做了基於功能的視圖,似乎能夠導航他們沒有太大的問題我可以移動請求,並獲得用戶信息等
因爲它現在,我已經建立了一些模型,涉及用戶,但我似乎無法根據登錄用戶將這些視爲我的通用視圖。
種
現有型號:
class Common(models.Model):
"User abstraction for carrying general info."
user = models.OneToOneField(User, related_name="%(app_label)s_%(class)s_related")
...some methods/properties...
class Employee(Common):
"Employee specific info."
...some methods/properties...
我想要在我的意見做的是檢查登錄用戶,拉動相應的員工。
我目前看來是這樣的:
class v_UserDetail(DetailView):
# model = Employee
template_name = "user.html"
def get_object(self):
return get_object_or_404(User, self.request.user)
我想到我應該可以做一些事來的Employee.user.get_object(id='')
的影響,但我不知道如何讓登錄的用戶的ID。
現在可能是我沒有足夠的經驗與Django直接進入課堂觀點,但我只是迷失了。我一直在翻閱文檔和教程,他們似乎都希望我已經理解傳遞到通用視圖的內容。
注:我對Python的2.7
運行的Django 1.6議決
感謝來自@karthikr評論下面,我能夠做一個小的調整,並讓它運行。新觀點是:
class v_UserDetail(DetailView):
template_name = "user.html"
def get_object(self):
return get_object_or_404(Employee, id = self.request.user.id)
我現在如何編輯的get_object功能檢查等相關課程,但是這讓我在那裏我想要的。我可以僅基於登錄的用戶拉動其他對象。
改進
我發現,我正在這樣難度比是必要的。用戶對象具有將相關模型拉入模板的能力,因此我將查找的對象全部放在一起。新的模板具有這樣的:
{% if user.employee %}
{% include 'employee/emp_profile.html' %}
{% endif %}
之前,我將它張貼作爲一個答案,是有原因,你不只是使用[的DetailView(https://docs.djangoproject.com/en/dev/ref/ Employee模型的基於類的視圖/通用顯示/#detailview)? –
基於功能的視圖不被棄用。基於功能的_generic_視圖將會。 –
試試這個:'get_object_or_404(User,id = self.request.user.id)' – karthikr