当您有一个带有选项选项的模型字段时,您往往会有一些与人类可读名称相关联的魔术值.在Django中是否有一种方便的方法来通过人类可读的名称而不是值来设置这些字段?
考虑这个模型:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
Run Code Online (Sandbox Code Playgroud)
在某些时候,我们有一个Thing实例,我们想要设置它的优先级.显然你可以这样做,
thing.priority = 1
Run Code Online (Sandbox Code Playgroud)
但这迫使你记住PRIORITIES的Value-Name映射.这不起作用:
thing.priority = 'Normal' # Throws ValueError on .save()
Run Code Online (Sandbox Code Playgroud)
目前我有这个愚蠢的解决方法:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
Run Code Online (Sandbox Code Playgroud)
但那很笨重.考虑到这种情况有多常见,我想知道是否有人有更好的解决方案.是否有一些字段方法按选项名称设置字段我完全忽略了?
我有一个Ruby on Rails应用程序,它vendor/rails存在时崩溃但如果不存在则工作正常.我需要在我的本地副本中保留此文件夹,以便我可以工作,但我不希望永久提交此删除.有人把它放在那里是有原因的.
那么如何删除这个文件夹而不将其git status作为一千个已删除的文件出现?显然.gitignore无法工作,因为您无法忽略已经跟踪的文件.这里列出的任何解决方案(git update-index --assume-unchanged)都不起作用.
有没有办法让Java程序检测操作系统何时即将进入睡眠状态,或者失败,至少检测到唤醒?
实际问题是在特定应用程序中,许多MySQL数据库操作在后台运行.在Windows机器上进行测试时,这些数据库事务在睡眠/唤醒周期后中断,导致程序中出现大量错误情况.这些错误通常如下所示:
java.net.SocketException MESSAGE: Software caused connection abort: recv failed
如果我们能够对"即将入睡"事件作出反应,我们可以尝试暂停后台操作以解决问题.理想情况下,如果我们能够对"刚刚醒来"事件作出反应,我们至少可以抑制错误消息.
执行摘要:如何使用Java代码将新的根证书安装到Java中?
我们有一个桌面应用程序,可以访问各种Web服务.最近,其中一人将SSL证书转换为Trustwave签署的证书.虽然常规Internet浏览器接受Trustwave SSL证书,但Java似乎没有先决条件根证书,并且我们失去了对给定Web服务的访问权限,并显示以下错误消息:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
我们通过说服提供商切换回Verisign来暂时缓解,但当他们切换回来时我们必须做好准备.所以我需要我们的桌面软件根据需要自动安装Trustwave根证书.我们的客户对于使用keytool命令并不够精通技术,我宁愿不编写脚本,因为这对我来说是一个脆弱的解决方案(Mac和PC的单独实现,对Vista执行限制的斗争,无法找到正确的JRE安装到等).
我想keytool在内部使用Java.我可以在Java中使用什么命令来复制keytool的功能并以编程方式安装根证书?
在Objective-C Cocoa中,我们有一个NSIndexSet类,它通过保留一系列范围来有效地存储一系列唯一索引.例如,集合1,2,...... 30,57将被存储为范围1-30和57而不是32个数字的数组.这有助于以简单快速的方式存储大量选择.例如,如果选择的表中的所有行都在1到100万之间,则索引集会折叠到一个很小的范围,并且可以快速比较和交叉.
不幸的是,这对Google来说相当困难.Java有一个等价的类吗?
将NSArrayControllercontentArray 绑定到an时NSUserDefaultsController,必须选中绑定上的"Handles Content As Compound Value"复选框.这已成为传统智慧,但该选项实际上做了什么?
我写了一个小测试应用程序并且可以观察到打开选项后,只要编辑数组中元素的属性,整个contentArray就会传递给绑定源setValue:forKey:.选项关闭时,仅修改元素对象本身,并且不通知绑定源.
这解释了为什么需要选项才能完成NSUserDefaultsController工作(否则它不会注意到您已经编辑了数组中的某些内容而从未保存更改).但它并没有解释谁在做什么不同的确切.阵列控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样,它如何与选项的既定目的相关,即"使用可逆值变换器将复合值暂时转换成较小的部分"?