首页 > 解决方案 > Django从两个与外键相关的表中获取数据

问题描述

我想从一个模型和相关图像中获取数据意味着我想获取车辆 ID 并与该车辆相关,它基于 F 键关系的相关图像。

型号1
from django.db import models

class VehicleAd(models.Model):
    vehiclename = models.CharField(max_length=50)
模型 2
from django.db import models
from .vehiclead import VehicleAd

class Vehicleadimages(models.Model):
    vehiclead = models.ForeignKey(VehicleAd, on_delete=models.CASCADE,enter code hererelated_name="relatedvehiclead")
    image = models.ImageField(upload_to="images/vechileadimage")
意见
def viewVehiclead(request):

    vehiclead = VehicleAd.objects.all()
    vehicleadimages = Vehicleadimages.objects.all()
    print(vehiclead)

    context = {
        'vehiclead':vehiclead,
        'vehicleadimages': vehicleadimages
    }

    return render(request,'vehiclead/view.html',context) 
模板
{% block body %}
<div class="container bg-color-w shadow-lg custom-style-cont ">
    {% include "menu/top-menu.html" %}

    <div class="col-md-12 pd-arn2prc">
        <div class="container">
            <div class="row">
                <div class="col-md-12 mx-auto">
                    <h1>h2</h1>
                    <table>
                        {% for v in vehiclead %}
                        <a href="#">{{ v.vehicleadimages.image }}</a>
                        {% endfor %}
                    </table>
                </div>
            </div>
        </div>
    </div>

</div>
{% endblock body %}

标签: django

解决方案


v.vehicleadimages返回所有图像。它是一个查询集而不是一个对象,这意味着您无法调用.image

您可以使用 for 循环:

{% for v in vehiclead %}
    {% for image in v.vehicleadimages.all %}
        <a href="#">{{ image.image }}</a>
    {% endfor %}
{% endfor %}

如果您需要第一张图片:

<a href="#">{{ v.vehicleadimages.first.image }}</a>

或者

<a href="#">{{ v.vehicleadimages.all.0.image }}</a>

还有with标签:

{% with item.itemimage_set.all|first as image %}
    <a href="#">{{ image.image }}</a>
{% endwith %} 

推荐阅读