Django-了解信息在网页上的显示方式

时间:2017-01-09 13:03:21

标签: python django view

我最近接手了Django / Python项目的开发,并且正在研究如何修复系统中的特定错误。

有一个项目数据库,其中包含有关存储的每个项目的大量信息。在其中一个网页上,有一个按钮,单击该按钮将向页面添加新表单 - 该表单允许用户输入有关给定项目的新对象的一些详细信息。如果数据库中存在该项目的现有对象,则将显示“表”,每个现有对象的每一行都有一个表单,用户可以手动更新表单中的字段以更新每个对象的信息。数据库中的对象。他们还可以在'table'中添加一个新的'row'来创建一个要添加到该项目的新对象。

此页面由视图显示:

def current_ccis(request, budget_id):
    """
    View the CCIs for the current budget
    """
    budget = Budget.objects.select_related('project').get(id=budget_id)
    project = budget.project
    ccis = CciItem.objects.select_related('budget', 'budget__project', 'project_room', 'project_room__room').filter(budget_id=budget_id).order_by('project_room__order', 'created')

    formset = CciItemFormset(queryset=ccis.exclude(name=None), form_kwargs={'project':project})

    context = {
            'ccis': ccis,
            'project': project,
            'budget': budget,
            'formset': formset,
            'widths': ['60px', '120px', '220px', '120px', '60px', '60px', '60px', '280px', '280px'],

            }
    return render(request, 'costing/ccis_current.html', context)

每个对象的form的每个formset中的第一个单元格显示对象的“类型”,并且每个其他单元格显示/存储与对象本身相关的其他信息。 / p>

在另一个网页上,会显示一个关于给定项目的报告,其中包含基于用户输入到视图current_ccis(request, budget_id)

所显示页面上的表单内容的信息

此页面由视图显示:

def report_ccis(request, project_id):
    """ CCI items styled for pdf """
    project = Project.objects.get(id=project_id)
    budget = get_current_budget(project_id)

    cci_total_exc = budget.cci_total_exc_vat_final
    cci_grouped_items = budget.cci_items.all().order_by('project_room', 'name')

    context = {
        'project': project,
        'cci_total_exc': cci_total_exc,
        'cci_grouped_items': cci_grouped_items,
        'webview': 1,
    }

    try: context['current_budget'] = project.budget_versions.get(current_marker=1) #For option name/date on top of pdfs
    except ObjectDoesNotExist: pass

    if request.GET.get('stage') == 'pd':
        """ Render post deposit homepage """
        context['html'] = render_to_string('costing/report2_ccis.html', context)
        context['active_tab'] = '4'
        return render(request, 'costing/reports_post_deposit.html', context)
    else:
        """ Render pre deposit homepage """
        context['html'] = render_to_string('costing/report_ccis.html', context)
        context['active_tab'] = '5'
        return render(request, 'costing/reports_pre_deposit.html', context)

并且报告当前以以下格式显示信息:

  

标题

     

项目ID

     

对象

  detail

  detail
     

对象

  detail

即。属于项目的对象列表,在“对象标题”下面是属于该对象的详细信息列表。

我在这里遇到的问题是,对于某些项目,“对象”名称都显示在每个“对象”下方列出了“详细信息”,但对于其他项目,详细信息未列在各自的'对象',而是全部列在一个'对象'下,标题为“无”......

我不明白,这就是为什么存在这种不一致的原因 - 为什么对于某些项目,“对象”名称显示在报告中,所有“详细信息”列在各自的“对象”下,但对于其他项目,所有'细节'都列在对象'无'......?

任何人都有任何建议,为什么会这样?

修改

报告显示在HTML文件中:

(后存款):

{% block tabs %}


    {% with 'Payment schedule,Agreed variations,Variations not yet finalised,Client choice items,Overview'|listify as tabs %}
        {% for tab_name in tabs %}
            {% with forloop.counter as tab %}
                {% if not tab == active_tab|add:0 %}<a class="tab" href="{% url 'costing:report2_tabbed' project.id %}?tab={{tab}}">{% else %}<a class="active tab">{% endif %}{{tab_name}}</a>
            {% endwith %}
        {% endfor %}
    {% endwith %}
{% endblock tabs %}

(预存款):

{% block tabs %}
    {% with 'Overview, Construction budget, Schedule of works, Client choice items'|listify as tabs %}
        {% for tab_name in tabs %}
            {% with forloop.counter as tab %}
                {% if not tab == active_tab|add:0 %}<a class="tab" href="{% url 'costing:report_tabbed' project.id %}?tab={{tab}}">{% else %}<a class="active tab">{% endif %}{{tab_name}}</a>
            {% endwith %}
        {% endfor %}
    {% endwith %}
{% endblock tabs %}

修改

此HTML来自的文件都来自同一HTML文件(reports_tabbed.html),该文件包含以下HTML:

{% extends "base.html" %}
{% load staticfiles utilities %}

{% block head_extras %}
    <link rel="stylesheet" type="text/css" href="{% static "moon/scss/pdf-reports.css" %}">
{% endblock head_extras %}

{% block page_options %}
    {% if request.user.first_name in 'Becky,Duncan'|listify and project.deposit_received %}
        <a href="{% url 'costing:pdf2_master' project.id %}?quick-pdf=1" target="_blank">Make quick PDF</a>
    {% endif %}
{% endblock page_options %}

{% block content %}

    <div class="tabbed m-r-lg text-sm">
        <div class="navbar tabbed text-sm">
            {% block tabs %}
            {% endblock tabs %}
        </div>

        <div class="tabbed-section border {% block tabbed_class %}page{% endblock tabbed_class %}">
            {{html}}
        </div>

    </div>

{% endblock content %}

{% block content_scripts %}

{% endblock content_scripts %}

0 个答案:

没有答案