gpt4 book ai didi

Django订单选择字段

转载 作者:行者123 更新时间:2023-12-04 12:19:57 26 4
gpt4 key购买 nike

我一直在为表单中的 Django 选择字段而苦苦挣扎。我在我的 forms.py 和一个单选选项字段中有选择。

DURATION_CHOICES = {
(1, '30'),
(2, '45'),
(3, '60'),
(4, '75'),
(5, '90'),
(6, '105'),
(7, '120+'),
}

duration = forms.ChoiceField(choices=DURATION_CHOICES, widget=forms.widgets.RadioSelect, label_suffix="", label="Trainingsdauer in Minuten",)

但是,当我打开表单以创建新的培训类(class)时,持续时间 radio 选择字段是随机排序的,即 105 在 45 之前的列表中。该顺序甚至从测试设备更改为另一个

我对来自 models.py 的选择字段有同样的问题

我已经订购了我的选择,但如何在我的表格中获得订购的选择列表?

最佳答案

我认为这更多是您使用的集合的问题。您在这里使用 curl 引号 ( {} ) .这是一个 set . A 为我们设置了出现零次或一次的可散列元素的无序集合。但如前所述,集合是无序的。这意味着如果您以检索的顺序枚举集合,则无法保证。

使用列表或元组

我认为你最好使用 list tuple 这里是元素的有序集合。对于列表,您可以使用方括号( [] ),对于元组,您可以使用圆括号( () ):

DURATION_CHOICES = [
(1, '30'),
(2, '45'),
(3, '60'),
(4, '75'),
(5, '90'),
(6, '105'),
(7, '120+'),
]

在将集合作为参数传递之前对其进行排序

如果您想继续使用该集合,我们可以在将其添加到字段之前将其转换为列表。例如,我们可以使用 sorted(..)根据元组的第一项对其进行排序:
from operator import itemgetter

duration = forms.ChoiceField(
choices=sorted(DURATION_CHOICES, key=itemgetter(0)),
widget=forms.widgets.RadioSelect,
label="Trainingsdauer in Minuten",
)

但是请注意,如果您对 DURATION_CHOICES 进行更改设置,这些更改将不会反射(reflect)在 ChoiceField 中,因为我们在这里对列表进行了浅拷贝。

关于Django订单选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450103/

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