如何在多模型Django中搜索特定项目?

2024-09-26 18:00:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我是django的新手,我正试图为我的朋友建立一个网站,介绍如何制作手工灯具。 我的问题是,我有3个不同的模型,其中包含不同类型的灯,我想访问这3个模型中的任何一个模型中的特定图片,并在另一个页面上显示图片和说明,但它只显示第一个模型中的一些图片,对于其他模型,会抛出错误

这是我的html和views.py代码

{% for q in project1.reverse|slice:":2"%} <div class="image-selected__lamps"> <a href="{% url 'project_detail' q.pk%}"> <img src="{{q.image.url }}"> </a> </div> {%endfor%} {% for e in project2.reverse|slice:":2"%} <div class="image-selected__lamps"> <a href="{% url 'project_detail' e.pk %}"> <img src="{{e.image.url}}"> </a> </div> {%endfor%} {% for s in project3.reverse|slice:":2"%} <div class="image-selected__lamps"> <a href="{% url 'project_detail' s.pk %}"> <img src="{{s.image.url}}"> </a> </div> {%endfor%}

enter image description here

def project_detail(request, pk):
    project = (LampType1.objects.get(pk=pk), LampType2.objects.get(pk=pk), LampType3.objects.get(pk=pk))

    context = {
        'project': project,
    }
    return render(request, 'project_detail.html', context)

Tags: in模型imagedivprojecturlfor图片
2条回答

检查这些步骤是否已完成

型号

  class LampType1(models.Model):
          title = models.CharField(max_length=40)
          description = models.TextField()  
          image = models.ImageField(upload_to='media') 
          #not
          #image = ImageField(upload_to='media')

设置.py

MEDIA_URL = 'media/'
MEDIA_ROOT = Path.joinpath(BASE_DIR,'media')

url.py

from django.conf.urls.static import static
from django.conf import setting

urlpatterns = [.....
              ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from django.contrib import admin

html

 {% for p in project %}

    <img src="{{ p.image.url }}">
 
  {% endfor %}

Edward发生这种情况可能是因为您正在向所有模型传递相同的id/pk,并且您从第一个模型而不是另一个模型获得了一张图片,因为具有该id/pk的对象在其他模型中不存在

要进行检查,请在管理员中注册您的模型,并检查具有该特定id的对象是否退出

相关问题 更多 >

    热门问题