python - Django:如何创建对象字典并在模板中显示
问题描述
嘿,我看过类似的问题,但没有一个与我正在尝试做的事情真正相关,它们要么解释了如何在管理面板中排序,要么只是简单地遍历对象字典。
我创建了一个包含值 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 是如何显示它们的,但它似乎只是根据上次编辑的显示它们。
谢谢你 :)
解决方案
我很傻,有时我忘记了我的观点!
看在上帝的份上,我所要做的就是指定 order_by ......
class Home(View):
pictures = Picture.objects.all().order_by('gallery_order')
def get(self, request):
return render(request, 'home.html', {'pictures': self.pictures})
推荐阅读
- tsql - 如果标签不是从触发器中的其他地方调用的,t sql 是否执行标签下面的代码?
- javascript - 如何更改轮播中箭头的形状?
- reactjs - React 自定义 Hooks 循环依赖
- spring - 尝试从命令行 TestNG 运行 Spring Boot 应用程序:Application Thrown Exception as AbstractTestNGSpringContextTests class not found
- powershell - 如果在 Get-ADUser 脚本中未找到用户,则将消息输出到我找到的用户的 CSV
- amazon-web-services - 在 Lambda 上运行时,Textract 无法从 S3 读取对象
- css - 为什么 feComponentTransfer 不使用 sRGB 颜色空间?
- python - 在 sparklyr 中将 12 小时制转换为 24 小时制
- c# - PreviewMouseLeftButtonDown 单击 TreeWiewItem 的箭头时触发
- python - 我正在尝试获取一个 for 循环来比较 2 个值相应地对其进行编辑,但它不起作用