如何正确显示ManyToMany ID匹配列表?
我的报告清单(每周,每月等):
Car Number 1:
-customer (date, name etc)
-customer (date, name etc)
Car Number 2:
-customer (date, name etc)
-customer (date, name etc)
我的模特:
class Car(models.Model):
name ...
class Reservation(model.Models):
cars = models.ManyToManyField('Car', related_name="reservation")
customerinfo = ...
由于每个客户可以预订多辆车,我必须使用M2M领域。
现在显示列表:
{% for car in cars %}
<h1>{{ car.name }}</h1>
{% for reservation in reservations %}
{% for reservationcar in reservation.cars.all %}
{% if reservationcar.id = car.id %}
<h2>{{ reservation.cusotmerinfo }}</h2>
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
现在,上述工作,但看起来不对,看起来很脏。
是否有更好,更清洁,更短的方法来实现这一目标?
答案 0 :(得分:1)
在views.py中执行查询并将生成的查询集添加到视图的上下文中会更快。或者使用related_name反向。还有建议通表。您应该尽量减少模板中的所有操作以提高性能。那么在python中真正的'数学'(例如在视图类中)。
在评论中给出的示例中: https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany
答案 1 :(得分:1)
M-M&#34;错误&#34;您可以使用this 它看起来像这样(未经测试)
class User(models.Model):
.. any data you need ..
class Car(models.Model):
.. any data you need ..
reservations = models.ManyToManyField(User, through='Reservations')
class Reservations(models.Model):
car = models.ForeignKey(Car)
user = models.ForeignKey(User)
.. any data you need ..
您可以将预订放在用户中并更改参考号。