Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中正确显示多个ID匹配列表?_Python_Django - Fatal编程技术网

Python 如何在Django中正确显示多个ID匹配列表?

Python 如何在Django中正确显示多个ID匹配列表?,python,django,Python,Django,如何正确显示多个ID匹配列表 我的报告清单(每周、每月等): 我的模型: class Car(models.Model): name ... class Reservation(model.Models): cars = models.ManyToManyField('Car', related_name="reservation") customerinfo = ... 由于每个客户都可以预订多辆车,所以我必须使用M2M字段 现在显示列表: {% for car i

如何正确显示多个ID匹配列表

我的报告清单(每周、每月等):

我的模型:

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 %}
{%cars-in-cars%}
{{car.name}
{保留%中的保留%}
{reservation.cars.all%中reservationcar的%
{%if reservationcar.id=car.id%}
{{reservation.cusotmerinfo}}
{%endif%}
{%endfor%}
{%endfor%}
{%endfor%}
现在,上面的方法可行,但看起来不对劲,而且看起来很脏


是否有更好、更干净、更短的方法来完成此任务?

在views.py中执行查询并将结果查询集添加到视图上下文中会更快。或按相关名称使用反向。也与建议通过表。为了提高性能,您在模板中所做的一切都应该最小化。因此,在python中进行真正的“数学运算”(例如,在views类中)

在注释中给出的示例中:

  • 人就是顾客
  • 这辆车是谁的
  • 会员资格是保留
M-M是“错误的”,您可以使用它 它看起来像这样(未测试)


您可能可以在用户中放置预订并更改参考。

难道汽车不应该有很多用户吗?我不确定你需要中间那张桌子。看看这个。@EsseTi我想你的解决方案正是我需要的。如果通过名为
ReservedCars
的表创建一个带有外键链接
Car
Reservation
车型的
,您能评论一下我的模板中的代码会是什么样子吗?是的,请查看。这并不复杂。试试看,谢谢你的回复!我几乎实现了这个结构。现在回到我最初的问题,我如何在我的模板中不使用与原始M2M帖子几乎相同的查询代码来查询它。问题是,当我执行
{%for car-in-car.reservation.all%}
时,我会得到所有的汽车预订,无论它们的预订日期如何。我已经在运行两个查询了
cars=Car.objects.all()
reservations=Reservation.objects.filter(mydates)
我正在尝试在没有
IF
行的情况下完成OP。最后,我找到了答案,我必须运行另一个查询来获取预订,并使用
IF
语句将它们过滤掉,因为我不知道是否有更好的解决方案。谢谢你的帮助!谢谢你的反馈!你能评论一下这个设置将如何改变我的原始帖子模板中的查询代码吗?
{% 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 %}
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 ..