【发布时间】:2021-10-14 04:51:32
【问题描述】:
嘿,我看过类似的问题,但没有一个与我正在尝试做的事情真正相关,它们要么解释了如何在管理面板中排序,要么只是遍历对象字典。
我创建了一个包含值 gallery_order 的基本照片模型,因此我可以在管理员中对其进行编辑。
我希望根据 gallery_order 值从 1 向上的顺序用图片填充我的模板。
我想最好的处理方法是使用字典,但我不知道在哪里初始化它,如果我把它放在图片模型中,那么每张图片都包含一个包含所有图片订单号和 url 的字典看起来很精神。
我现在的模特:
class Picture(models.Model):
title = models.CharField(max_length=36, blank=False, unique=True)
gallery_order = models.IntegerField(default=0)
image = models.ImageField(upload_to='photos/', blank=False)
def __str__(self):
return self.title
我的模板代码:
<head>
<meta charset="utf-8">
{% block content %}
<div class="row">
{% if pictures %}
{% for picture in pictures %}
<div class="col-md-12">
<div class="card mb-0">
<img class="card-img-top" src="{{ picture.image.url }}">
</div>
</div>
{% endfor %}
{% endif %}
</div>
{% endblock content %}
</head>
我的管理员代码:
@admin.register(Picture)
class PictureAdmin(admin.ModelAdmin):
list_display = ('gallery_order', 'title', 'image')
list_display_links = ['gallery_order']
search_fields = ['title']
def get_queryset(self, request):
queryset = super(PictureAdmin, self).get_queryset(request)
queryset = queryset.order_by('gallery_order')
return queryset
我试图通过查看 psotgres db 中的 PK 来弄清楚 django 是如何显示它们的,但它似乎只是根据上次编辑的显示它们。
谢谢你:)
【问题讨论】:
标签: python django dictionary templates