“django模板”;分组;标记don';t将分组记录作为I wan';T
我正在django上的一个项目中工作,我正在使用内置的视图ArchiveListView,我想按公共属性对要分组的记录进行排序。“django模板”;分组;标记don';t将分组记录作为I wan';T,django,django-models,django-views,django-templates,Django,Django Models,Django Views,Django Templates,我正在django上的一个项目中工作,我正在使用内置的视图ArchiveListView,我想按公共属性对要分组的记录进行排序。 因此django ORM没有一个group by查询,所以我尝试在模板上使用regroup标记来执行此操作,但我认为这需要很长时间,而且它没有给我想要的分组记录 这是我拥有的模型: class Vehicle(models.Model): serie = models.CharField(max_length=18, unique=True, blank=Tr
因此django ORM没有一个
group by
查询,所以我尝试在模板上使用regroup
标记来执行此操作,但我认为这需要很长时间,而且它没有给我想要的分组记录
这是我拥有的模型:
class Vehicle(models.Model):
serie = models.CharField(max_length=18, unique=True, blank=True, null=True)
matricule = models.CharField(max_length=18, unique=True, blank=True, null=True)
ww = models.CharField(max_length=18,blank=True, null=True)
marque_id = models.ForeignKey('Marque', blank=True, null=True, on_delete=models.SET_NULL)
entry_into_service = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True)
mouchard = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True)
extinguisher = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True, help_text="extincteur expiratiOn date")
city_id = models.ForeignKey('City', blank=True, null=True, on_delete=models.SET_NULL)
region_id = models.ForeignKey('Region', blank=True, null=True, on_delete=models.SET_NULL)
driver_id = models.ForeignKey('Driver', blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
ordering = ['serie','matricule']
def __str__(self):
return (self.matricule)
class GazStation(models.Model):
name = models.CharField(max_length=128, blank=True)
city_id = models.ForeignKey('City', blank=True, null=True, on_delete=models.SET_NULL)
geo_localization = gis_models.PointField(blank=True, null=True)
class Meta:
ordering = ['city_id','name']
def __str__(self):
return '%s %s' % (self.name, self.city_id.city)
class Refuel(models.Model):
vehicle_id = models.ForeignKey('Vehicle', blank=True, null=True, on_delete=models.SET_NULL)
driver_id = models.ForeignKey('Driver', blank=True, null=True, on_delete=models.SET_NULL, limit_choices_to ={'is_driver':True})
Controlor_id = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name='controlor_refuel', on_delete=models.SET_NULL, limit_choices_to ={'is_controlor':True})
gaz_station_id = models.ForeignKey('GazStation', blank=True, null=True, on_delete=models.SET_NULL)
date_time_creation = models.DateTimeField(auto_now=False, auto_now_add=True)
date_time_modified = models.DateTimeField(auto_now=True, blank=True)
odometer_reading = models.PositiveIntegerField(blank=True)
fuel_quantity = models.DecimalField(max_digits=5, decimal_places=2)
fuel_unit_price = models.DecimalField(max_digits=6, decimal_places=2)
class Meta:
ordering = ['gaz_station_id','-date_time_creation']
def __str__(self):
return (self.vehicle_id.serie)
这是我使用的类视图:
####### refuel view filtred by year #################
class RefuelsListViewSup(LoginRequiredMixin, YearArchiveView):
queryset = Refuel.objects.order_by('vehicle_id').all()
date_field = "date_time_creation"
make_object_list = True
allow_future = True
显示此视图的模板为:
{% extends 'base.html' %}
{% load mathfilters %}
{% block title %}
<title>Refuels Archive</title>
{% endblock title %}
{% block content %}
<div class="container">
<h1>La liste des gazoile archivé </h1>
<ul>
{% for date in date_list %}
<li>{{ date|date }}</li>
{% endfor %}
</ul>
<div>
<h1>All Refuels for {{ year|date:"Y" }}</h1>
{% regroup object_list by vehicle_id as vehicle_refuel %}
<ul>
{% for vehicle_id in vehicle_refuel %}
<p>
<li>Les pleints fait pour {{ vehicle_id.grouper}} sont:</li>
</p>
<table border="2">
<thead class="table-dark">
<th colspan="2">Driver name :</th>
<th>Driver number :</th>
<th>Gaz Station : </th>
<th>Date :</th>
<th>Kilometrage :</th>
<th>Quantity of Fuel: </th>
<th>Litre Price (Dh): </th>
<th>Totale (Dh)</th>
<th>City</th>
</thead>
<tbody id="body-table"><tr>
{% for refuel in vehicle_id.list %}
<tr>
<td colspan="2">{{ refuel.driver_id.first_name}} {{ refuel.driver_id.last_name }}</td>
<td>{{ refuel.driver_id.registration_number }}</td>
<td>{{ refuel.gaz_station_id.name}}</td>
<td>{{ refuel.date_time_creation }}</td>
<td>{{ refuel.odometer_reading }}</td>
<td>{{ refuel.fuel_quantity }}</td>
<td>{{ refuel.fuel_unit_price }}</td>
<td>{{ refuel.fuel_quantity|mul:refuel.fuel_unit_price }}</td>
<td>{{ refuel.gaz_station_id.city_id.city }}</td>
</tr>
{% endfor %}
</tbody>
{% endfor %}
</ul>
</div>
</div>
{% endblock content %}
{%extends'base.html%}
{%load mathfilters%}
{%block title%}
加油档案
{%endblock title%}
{%block content%}
意大利天然气建筑事务所
{日期列表%中的日期为%0}
- {{日期|日期}
{%endfor%}
{{年份|日期:“Y}}的所有加油
{%按车辆id将对象列表重新组合为车辆加油%}
{车辆加油%中车辆id的百分比}
- Les pleints fait pour{{vehicle_id.grouper}}sont:
驱动程序名称:
司机号码:
加沙站:
日期:
公里数:
燃油量:
公升价格(Dh):
总计(Dh)
城市
{车辆加油的百分比\u id.list%}
{{refuel.driver\u id.first\u name}{{{refuel.driver\u id.last\u name}
{{加油.司机\身份证.登记号码}
{{加油站加油站id.name}
{{refuel.date\u time\u creation}
{{加油.里程表读数}
{{加油.加油量}
{{加油.燃料单位价格}
{{加油.燃料数量{mul:加油.燃料单价}
{{加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站
{%endfor%}
{%endfor%}
{%endblock内容%}
您的html中有两个错误
无结束标记的随机
元素
{车辆加油的百分比\u id.list%}
{%endfor%}
{%endfor%}
因为我无法运行您的代码,所以我假设
标记不应该在那里
因此,希望这能解决您的问题
{%extends'base.html%}
{%load mathfilters%}
{%block title%}
加油档案
{%endblock title%}
{%block content%}
意大利天然气建筑事务所
{日期列表%中的日期为%0}
- {{日期|日期}
{%endfor%}
{{年份|日期:“Y}}的所有加油
{%按车辆id将对象列表重新组合为车辆加油%}
{车辆加油%中车辆id的百分比}
- Les pleints fait pour{{vehicle_id.grouper}}sont:
驱动程序名称:
司机号码:
加沙站:
日期:
公里数:
燃油量:
公升价格(Dh):
总计(Dh)
城市
{车辆加油的百分比\u id.list%}
{{refuel.driver\u id.first\u name}{{{refuel.driver\u id.last\u name}
{{加油.司机\身份证.登记号码}
{{加油站加油站id.name}
{{refuel.date\u time\u creation}
{{加油.里程表读数}
{{加油.加油量}
{{加油.燃料单位价格}
{{加油.燃料数量{mul:加油.燃料单价}
{{加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站加油站
{%endfor%}
{%endfor%}
{%endblock内容%}
您能告诉我们所需的分组是什么样的吗?请举个例子,我想按车辆id
对加油
查询进行分组,因为我想在表格中显示一年中每辆车的所有加油量。是的,我收集到了。更具体地说,是它根本没有显示任何内容,还是它给了你一个不同的分组?它给了我一个表中的单个记录,我发现每辆车都有多个表,这是我不想要的。我希望每辆车都有一张表,上面有所有的记录,但结果仍然是一样的。