当前位置: 首页 > 面试题库 >

通过choices =…名称设置Django IntegerField

颜举
2023-03-14
问题内容

你拥有一个带有选项选项的模型字段时,你倾向于具有一些与人类可读名称相关的不可思议的值。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']

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


问题答案:

可以使用代表适当整数的单词。

像这样:

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

然后它们仍然是数据库中的整数。

用法是 thing.priority = Thing.NORMAL



 类似资料:
  • 问题内容: 我需要动态设置JS对象属性名称。 结果应为: 问题答案:

  • 我正在为Kafka主题编写侦听器,并使用@kafkaListener注释来做同样的事情。到目前为止,我硬编码了主题名(topic1),效果很好。这是一个有效的代码:- } 现在,当我试图更改代码以从代码中获取主题名称时,它不起作用。代码,我试图从代码中获取值后,在堆栈溢出(如何将动态主题名称传递给@kafkalistener(主题从环境变量)是:- } 当我试图启动服务器时,它抛出错误:- bea

  • 我有一个spring批处理作业(用xml定义),它生成csv导出。在FlatFileItemWriter bean中,我正在设置resource,其中设置了文件名。 现在我需要考虑到某种逻辑来设置这个文件名,所以我需要从某个java类中设置文件名。有什么想法吗?

  • 操作步骤: ①进入编辑地图页面点击左上方地图名称。 ②进入编辑状态。 ③编辑完成后,点击回车或是√,地图名称修改成功。 提示 ●地图名称不能少于2个字符。 操作动图: [查看原图]

  • 问题内容: 在阅读O’Reilly的“高性能MySQL”时,我偶然发现了以下内容 另一个常见的垃圾查询是SET NAMES UTF8,无论如何这是错误的处理方式(它不会更改客户端库的字符集;它仅影响服务器)。 我有点困惑,因为我曾经将“ SET NAMES utf8”放在每个脚本的顶部,以使数据库知道我的查询是utf8编码的。 任何人都可以评论以上引用,或者,更正式地说,是什么建议或最佳实践,以确

  • 问题内容: 我经常在使用MySQL的PHP​​脚本中看到类似的内容 我从来没有对任何项目都这样做,所以我对此有两个基本问题。 这仅是通过PDO完成吗? 如果不是PDO特定的事情,那么这样做的目的是什么?我意识到它正在为mysql设置编码,但是我的意思是,我从未使用过它,所以为什么要使用它? 问题答案: 每当您要将数据发送到具有纯ASCII无法表示的字符(例如“ñ”或“ö”)的服务器时,都需要使用它