目前还不清楚您的要求是否允许任何用户批准文档,但我推断这是基于您的模型的情况。如果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