目前還不清楚您的要求是否允許任何用戶批準文檔,但我推斷這是基於您的模型的情況。如果Document
只能由特定用戶或一組用戶批准,或者文檔被多個用戶批准,則需要對模型設計進行一些實質性更改。
如果沒有,我會寫這樣的觀點:
from django.db.models import Q
def approval_view(request):
documents = Document.objects.filter(
Q(approval__id__isnull=True) | Q(approval__user=request.user))
return render_to_response(template_name, {'documents': documents})
這將返回一個方面與在審批表中沒有審批記錄或誰已通過request.user
文件。
您可能需要一些額外的代碼才能在documents
中顯示每個文檔的相應信息。例如,可能需要顯示文檔狀態("For your Approval"
或"Approved"
或其他)的自定義模板過濾器。示例模板片段:
{% for document in documents %}
<li>{{ document.name }} - {{ document|approval_status }}</li>
{% endfor %}
正如我在開始時所說的,您的要求不明確。每個用戶都有機會批准文檔嗎?或者是否所有文件都有一個機會獲得任何用戶的批准?這有一個很大的區別,這個代碼反映了後面的假設。
如果每個用戶都有機會批准文檔,並且需要顯示當前用戶的批准決定,那麼上述代碼將稍作修改即可使用。我可能會修改視圖以某種順序來顯示所有文件:
documents = Document.objects.all()
然後用如上自定義模板過濾器來顯示當前用戶(在用戶作爲參數傳遞)的審批狀態:
<li>{{ document.name }} - {{ document|approval_status:request.user }}</li>
Approval審批表中每個文件都沒有審批記錄審批表只有在用戶提交審批狀態時纔會更新......否則審批狀態爲'您的審批' – user975472
好的,我已經改寫答案。 – danihp