gpt4 book ai didi

python - 一些具有相同选择源的 Django ChoiceFields

转载 作者:行者123 更新时间:2023-11-28 16:28:41 24 4
gpt4 key购买 nike

我有这样一个模型:

class MyModel(models.Model):
DAYS = ((str(d), str(d)) for d in range(1, 29))

day1 = models.CharField('Day 1', max_length=3, null=True, blank=True, choices=DAYS)
day2 = models.CharField('Day 2', max_length=3, null=True, blank=True, choices=DAYS)

呈现后,我看到只有字段 day1 有选择列表,但 day2 是空的。如果我创建另一个具有相同定义的常量 DAYS2 并将其分配给 day2 - 它会起作用。

似乎 Django 修改了 choices 参数的来源?我没有在消息来源中找到它,但也许我做错了什么?这是一个已知的限制吗?

我可以使用在 DAYS 上应用 deepcopy 的解决方法。但我不认为这是好的风格。还有别的办法吗?

最佳答案

使用 DAYS 的列表:

class MyModel(models.Model):
DAYS = [str(d), str(d)) for d in range(1, 29)]
day1 = models.CharField('Day 1', max_length=3, null=True, blank=True, choices=DAYS)
day2 = models.CharField('Day 2', max_length=3, null=True, blank=True, choices=DAYS)

目前,DAYS 是一个生成器。当您第一次访问它以获取 day1 的选择时,它会返回您期望的结果。但是,生成器随后已被消耗,因此当您尝试获取 day2 的选项时,您会得到一个空列表。

您可以通过在 Python shell 中尝试以下操作来了解这一点:

>>> DAYS = ((str(d), str(d)) for d in range(1,5))
>>> print(list(DAYS))
[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4')]
>>> print(list(DAYS))
[]
>>>

关于python - 一些具有相同选择源的 Django ChoiceFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324210/

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