gpt4 book ai didi

python - Django 在 View 中保留外键

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:10 24 4
gpt4 key购买 nike

我在一个模板中有一个反向查询,该查询处理两个通过外键连接在一起的表。该查询现在给出了我想要的结果,但在未来,很明显会给我带来关于查询优化的严重问题。我正在向数据库发送查询,以获取与我正在使用的表格相关的所有图片,而不是只显示其中一张。

我无法适应我在 HTML 模板中编写的反向查询的 View 功能。

这是我的工作代码:

models.py

class EtkinlikModel(models.Model):
...

class FotografModel(models.Model):
etkinlik = models.ForeignKey(EtkinlikModel, on_delete=models.CASCADE)

views.py

def EtkinlikView(request):
etkinlikler = EtkinlikModel.objects.all().order_by("-olusturulma_tarihi")[:4]
template = “…”
context = {
"pageName": title,
"etkinlikler" : etkinlikler
}
return render(request,template,context)

template.html

{% for etkinlik in etkinlikler  %}
{{ etkinlik.etkinlik_adi }}

{% for foto in etkinlik.fotografmodel_set.all|slice:":1" %}
{{ foto.foto }}
{% endfor %}
{% endfor %}

减少查询负载的代码

views.py

def EtkinlikView(request):
etkinlikler = EtkinlikModel.objects.all().order_by("-olusturulma_tarihi")[:4]
for etkinlik in etkinlikler:
foto = etkinlik.fotografmodel_set.all()
template = “…”
context = {
"pageName": title,
"etkinlikler" : etkinlikler,
"foto":foto
}
return render(request,template,context)

template.html

{% for etkinlik in etkinlikler  %}
{{ etkinlik.etkinlik_adi }} {{ etkinlik.id }}
{% for f in foto %}
{{f.foto}}
{% endfor %}
{% endfor %}

在每个etkinlik对象中重复显示只有一张照片的结果

最佳答案

def EtkinlikView(request):
etkinlikler = EtkinlikModel.objects.all().order_by("-olusturulma_tarihi")[:4]
template = "…"
context = {
"pageName": title,
"etkinlikler" : etkinlikler,
}
return render(request,template,context)

在模板中

{% for etkinlik in etkinlikler  %}
{{ etkinlik.etkinlik_adi }} {{ etkinlik.id }}
{{ etkinlik.fotografmodel_set.first.foto }}
{% endfor %}

希望这能奏效

关于python - Django 在 View 中保留外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com