Django Query 设置从数据库中获取数据?

jax*_*jax 3 django django-templates django-models django-views

我创建了一个模型,如下所示:

from __future__ import unicode_literals

from django.db import models


class TypesOfVehicle(models.Model):

    type = models.CharField(max_length=50)
    def __unicode__(self):
        return self.type


class vehicleDetails (models.Model):

    T = models.ForeignKey(TypesOfVehicle)
    NoOfWhl = models.PositiveIntegerField()
    year = models.CharField(max_length=4)
    ModelName = models.CharField(max_length=254)
    VID = models.CharField(max_length=254, verbose_name="VID")
Run Code Online (Sandbox Code Playgroud)

要查看上述数据,我写了一个视图,如下所示:

from django.shortcuts import render
from .models import CountryDiseases, Country


def VData(request):
    Count = vehicleDetails.objects.all()
    return render(request, 'DATAPLO/MAP.html', {'Count': Count })
Run Code Online (Sandbox Code Playgroud)

为了呈现我的视图,我写下了一个像这样的简单模板

地图.html

{% for c  in Count %}
{{c.NoOfWhl }} {{ c.year }} {{ c.ModelName }}<br/>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我的问题是我对 Django 非常陌生,经过几次不成功的尝试后,我无法写出一种可以呈现我的数据的方法,如下所示。

我如何修改视图和模板部分,以便它可以返回这样的内容

样本输入数据:

NoOfwhl year modelName VID Type 

4       2014 xyz111    786 SUV
2       2012 445444    789 bk
4       2014 655656    676 car
3       2013 565656    459 tax
4       2010 565656    567 SUV
3       2019 345353    359 tax
3       2013 234224    789 tax
4       2014 L34535    345 SUV
3       2011 456464    789 tax
3       2012 456465    799 tax
4       2033 345353    09u car
2       2014 354354    454 scl
Run Code Online (Sandbox Code Playgroud)

现在让我们假设如果有人点击“SUV”,它应该返回与“SUV”相关的所有信息,如下所示:

urls 键为“SUV”:

NoOfwhl year modelName VID 

4       2014 xyz111    786 
4       2010 565656    567 
4       2014 L34535    345 
Run Code Online (Sandbox Code Playgroud)

Ess*_*sex 6

我试图理解你的问题,我将用我的 Django Web 应用程序中的一个例子来回答。

就我而言,但您的情况类似,我有一个模板,可将我数据库中的所有公司呈现在一个表中。我显示所有公司,如果我单击一个单元格,我可以根据该公司查询包含所有信息的新模板。这与您要求的问题完全相同。

第一步:urls.py 文件

在此文件中,根据您的问题,我有 3 个网址:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^Formulaire/Societes$', views.Identity_Societe_Form, name = "SocieteFormulaire"),
    url(r'^Resume/Societes$', views.Identity_Societe_Resume, name = "SocieteResume"),
    url(r'^Contrat/Societe/(?P<id>\d+)/$', views.Identity_Contrat, name="Contrat"),
]
Run Code Online (Sandbox Code Playgroud)
  • SocieteFormulaire 让我们填写表格并将对象保存在我的数据库中
  • SocieteResume让我们在一个包含多个信息的表格中显示所有公司。在此表中,我可以单击内部以显示公司模板。
  • Contrat 让我们在所选公司的功能中显示模板

第二步:带有恢复功能的view.py文件

在我看来,我有一个函数可以在 HTML 模板中显示所有公司。

@login_required
def Identity_Societe_Resume(request) :

    societe = Societe.objects.all()
    contrat = SocieteContrat.objects.all()

    paginator = Paginator(societe, 10)
    page = request.GET.get('page', 1)

    try:
        societe = paginator.page(page)
    except PageNotAnInteger:
        societe = paginator.page(1)
    except EmptyPage:
        societe = paginator.page(paginator.num_pages)

    paginator = Paginator(contrat, 10)
    page = request.GET.get('page', 1)

    try:
        contrat = paginator.page(page)
    except PageNotAnInteger:
        contrat = paginator.page(1)
    except EmptyPage:
        contrat = paginator.page(paginator.num_pages)

    context={
        "societe" : societe,
        "PageNotAnInteger":PageNotAnInteger,
        "contrat" : contrat,
    }

    return render(request, 'Identity_Societe_Resume.html', context) 
Run Code Online (Sandbox Code Playgroud)

我在这个名为的 html 模板中显示了在我的数据库中注册的所有公司: Identity_Societe_Resume.html

这个模板的核心看起来像:

<h4><b> <span class="glyphicon glyphicon-user"></span></span> Récapitulatif des Sociétés ayant souscrit à un contrat de services : </b></h4>
            <table style="width:125%">
                <tbody>
                <tr>
                    <th>ID</th>
                    <th>Nom</th>
                    <th>État</th>
                    <th>SIRET</th>
                    <th>SIREN</th>
                    <th>NAF-APE</th>
                    <th>Adresse</th>
                    <th>Ville</th>
                    <th>Pays</th>
                </tr>
                {% for item in societe %}
                <tr>
                    <td><a href="http://localhost:8000/Identity/Contrat/Societe/{{item.id}}"> Ici </a></td>
                    <td>{{ item.Nom}}</td>
                    <td>{{ item.Etat}}</td>
                    <td>{{ item.SIRET }}</td>
                    <td>{{ item.SIREN }}</td>
                    <td>{{ item.NAF_APE }}</td>
                    <td>{{ item.Adresse }}</td>
                    <td>{{ item.Ville}}</td>
                    <td>{{ item.Pays.name }}</td>
                </tr>
                {% endfor %}
                </tbody>
            </table>
Run Code Online (Sandbox Code Playgroud)

如您所见,我的表显示了一些信息并显示了company ID. 但根据urls.py之前显示的文件,此信息是指向公司模板的链接。

第三步:带有公司信息的views.py文件

在这一步,我按照好的公司展示信息。在我的网址中,我有:http://localhost:8000/Identity.Contrat/Societe/1

数字1显示有关的信息company 1

然后我认为:

@login_required
def Identity_Contrat(request, id) :

        societe = get_object_or_404(Societe, pk=id)
        contrat = get_object_or_404(SocieteContrat, pk=id)
        #etc ...
Run Code Online (Sandbox Code Playgroud)

拥有 :(request, id)并且在我提到的每个查询集中非常重要company ID

最后,在我的模板中,我有:

<h4><b> Récapitulatif concernant la société : {{societe.Nom}}</b></h4>
            <table style="width:125%">
                <tbody>
                <tr>
                    <th>ID</th>
                    <th>Nom</th>
                    <th>État</th>
                    <th>SIRET</th>
                    <th>SIREN</th>
                    <th>NAF-APE</th>
                    <th>Adresse</th>
                    <th>Ville</th>
                    <th>Pays</th>
                </tr>
                <tr>
                    <td>{{societe.id}}</td>
                    <td>{{ societe.Nom}}</td>
                    <td>{{ societe.Etat}}</td>
                    <td>{{ societe.SIRET }}</td>
                    <td>{{ societe.SIREN }}</td>
                    <td>{{ societe.NAF_APE }}</td>
                    <td>{{ societe.Adresse }}</td>
                    <td>{{ societe.Ville}}</td>
                    <td>{{ societe.Pays.name }}</td>
                </tr>
                </tbody>
            </table>
Run Code Online (Sandbox Code Playgroud)

希望这个例子有帮助,我为我的英语很糟糕而道歉..