gpt4 book ai didi

python - 通过选择设置 Django IntegerField=...名称

转载 作者:IT老高 更新时间:2023-10-28 21:09:13 24 4
gpt4 key购买 nike

当您有一个带有选择选项的模型字段时,您往往会有一些与人类可读名称相关联的神奇值。在 Django 中是否有一种方便的方法可以通过人类可读的名称而不是值来设置这些字段?

考虑这个模型:

class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)

priority = models.IntegerField(default=0, choices=PRIORITIES)

在某些时候,我们有一个 Thing 实例,我们想要设置它的优先级。显然你可以做到,

thing.priority = 1

但这会迫使您记住优先级的值-名称映射。这不起作用:

thing.priority = 'Normal' # Throws ValueError on .save()

目前我有这个愚蠢的解决方法:

thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']

但这很笨拙。考虑到这种情况有多普遍,我想知道是否有人有更好的解决方案。是否有一些我完全忽略的按选择名称设置字段的字段方法?

最佳答案

seen here 做.然后你可以用一个词来代表正确的整数。

像这样:

LOW = 0
NORMAL = 1
HIGH = 2
STATUS_CHOICES = (
(LOW, 'Low'),
(NORMAL, 'Normal'),
(HIGH, 'High'),
)

那么它们在 DB 中仍然是整数。

用法是 thing.priority = Thing.NORMAL

关于python - 通过选择设置 Django IntegerField=...名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1117564/

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