如何在 Django 中进行复杂查询?
How to make a complex query in Django?
大家好!
Django新手,一头雾水,不胜感激!我正在尝试创建一个 table,例如:
Organization
Appeal Form
Amount of appeals in this form
Organization 1
In written form
1
Organization 2
In oral form
1
拥有三个模型:
class Organization(models.Model):
organization_name = models.CharField(max_length=50)
class AppealForm(models.Model):
form_name = models.CharField(max_length=50)
class Appeal(models.Model):
organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
appeal_form = models.ForeignKey(AppealForm, on_delete=models.CASCADE)
applicant_name = models.CharField(max_length=150)
组织模型的对象:
organization_name
Organization 1
Organization 2
AppealForm 模型的对象:
form_name
In written form
In oral form
上诉对象模型:
organization
appeal_form
applicant_name
Organization 1
In written form
Mary Elizabeth Smith
Organization 2
In oral form
Ada María Guerrero
如何进行复杂的查询,从上诉模型中检索信息?并放置到上面 table 的确切字段?:(
########################################### #############################
index.html
中的新 table
Organization
Total amount of appeals
Amount of written form appeals
Amount of oral form appeals
Organization 1
10
1
9
Organization 2
5
4
1
我创建了一个页面应用程序。看看模板在哪里。
views.py
from django.shortcuts import render
from .models import Appeal
from django.db.models import Count
def index(request):
qs = Appeal.objects.values(
"organization__organization_name", "appeal_form__form_name"
).annotate(total=Count("appeal_form__form_name"))
context = {
"appeal": qs,
}
return render(request, "pages/index.html", context)
index.html
<table>
<tr>
<th>Organization</th>
<th>Appeal Form</th>
<th>Amount of appeals in this form</th>
</tr>
{% for item in appeal %}
<tr>
<td>{{ item.organization__organization_name }}</td>
<td>{{ item.appeal_form__form_name }}</td>
<td>{{ item.total }}</td>
</tr>
{% endfor %}
</table>
pages
├── __init__.py
├── admin.py
├── apps.py
├── migrations
├── models.py
├── templates
│ └── pages
│ └── index.html
├── tests.py
├── urls.py
└── views.py
大家好!
Django新手,一头雾水,不胜感激!我正在尝试创建一个 table,例如:
Organization | Appeal Form | Amount of appeals in this form |
---|---|---|
Organization 1 | In written form | 1 |
Organization 2 | In oral form | 1 |
拥有三个模型:
class Organization(models.Model):
organization_name = models.CharField(max_length=50)
class AppealForm(models.Model):
form_name = models.CharField(max_length=50)
class Appeal(models.Model):
organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
appeal_form = models.ForeignKey(AppealForm, on_delete=models.CASCADE)
applicant_name = models.CharField(max_length=150)
组织模型的对象:
organization_name |
---|
Organization 1 |
Organization 2 |
AppealForm 模型的对象:
form_name |
---|
In written form |
In oral form |
上诉对象模型:
organization | appeal_form | applicant_name |
---|---|---|
Organization 1 | In written form | Mary Elizabeth Smith |
Organization 2 | In oral form | Ada María Guerrero |
如何进行复杂的查询,从上诉模型中检索信息?并放置到上面 table 的确切字段?:(
########################################### #############################
index.html
中的新 tableOrganization | Total amount of appeals | Amount of written form appeals | Amount of oral form appeals |
---|---|---|---|
Organization 1 | 10 | 1 | 9 |
Organization 2 | 5 | 4 | 1 |
我创建了一个页面应用程序。看看模板在哪里。
views.py
from django.shortcuts import render
from .models import Appeal
from django.db.models import Count
def index(request):
qs = Appeal.objects.values(
"organization__organization_name", "appeal_form__form_name"
).annotate(total=Count("appeal_form__form_name"))
context = {
"appeal": qs,
}
return render(request, "pages/index.html", context)
index.html
<table>
<tr>
<th>Organization</th>
<th>Appeal Form</th>
<th>Amount of appeals in this form</th>
</tr>
{% for item in appeal %}
<tr>
<td>{{ item.organization__organization_name }}</td>
<td>{{ item.appeal_form__form_name }}</td>
<td>{{ item.total }}</td>
</tr>
{% endfor %}
</table>
pages
├── __init__.py
├── admin.py
├── apps.py
├── migrations
├── models.py
├── templates
│ └── pages
│ └── index.html
├── tests.py
├── urls.py
└── views.py