gpt4 book ai didi

database - 在模板中使用 Django 链 如何?

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:37 25 4
gpt4 key购买 nike

我用链如:

在 views.py 中

places_list = Place.objects.all().order_by('-datetimecreated')[:5]
events_list = Event.objects.all().order_by('-datetimecreated')[:5]
photos_list = Photo.objects.all().order_by('-datetimecreated')[:5]
result_list = list(chain(photos_list, places_list, events_list))

在模板文件中

    {% for item in result_list %}

<a href="{% url view_place item.slug %}">{{item.title}}</a>

{% endfor %}

那是显示一个地方,但如何显示一个事件或照片?

        <a href="{% url view_event item.slug %}">{{item.title}}</a>
<a href="{% url view_photo item.slug %}">{{item.caption}}</a>

提前致谢。

最佳答案

我需要了解更多信息才能正确回答您的问题,但这里有一些想法可能会对您有所帮助。我假设 photos_listplaces_listevents_list 都是属于 Django 模型的不同类的对象。

选项 1:在每个类上定义一个方法来确定对象的类型

例如,在每个模型上定义一个content_type方法,像这样:

class Photo(models.Model):
def type(self):
return 'photo'

然后在您的模板中检查:

{% for item in result_list %}
{% if item.type == "photo" %}
...
{% elif item.type == "place" %}
...
{% else %}
...
{% end %}
{% endfor %}

选项 2:在每个类上定义一个 render 方法

这可能更丑陋,但您可以在每个对象上定义一个 render 方法,该方法返回您想要为该对象输出的完整 HTML。然后是在您的模板中执行此操作的情况:

{% for item in result_list %}
{{ item.render }}
{% endfor %}

旁注:考虑继承

听起来照片、地点和事件都可能出现在同一个提要中,因此它们可能共享一些公共(public)字段(如 posted_at)。关于此,您需要考虑各种因素,因此最好查看 Django documentation on model inheritance。 .

关于database - 在模板中使用 Django 链 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270618/

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