如何在django选项字段中从​​值中检索键?

时间:2015-08-03 07:59:21

标签: python django django-models

示例代码如下:

REFUND_STATUS = (
    ('S', 'SUCCESS'),
    ('F', 'FAIL')
)
refund_status = models.CharField(max_length=3, choices=REFUND_STATUS)

我知道在模型中我可以使用方法get_refund_status_display()方法检索SUCCESS。但是,如果我想反过来这样做:我有'成功'我想找到缩写形式' S'。我怎么能在django或python中做到这一点?

3 个答案:

答案 0 :(得分:0)

我会写这样的东西:

next(iter([x[0] for x in REFUND_STATUS if 'SUCCESS' in x]), None)

答案 1 :(得分:0)

将其转换为字典。

refund_dict = {value: key for key, value in REFUND_STATUS}
actual_status = refund_dict[display_status]

答案 2 :(得分:0)

您是否正在询问尚不清楚:如果我有一个类型为“ S”的对象,如何获得“ S”?如果我拥有“成功”,我如何获得“ S”?

在第一种情况下,您只需使用:

my_object.refund status # returns "S"

在第二种情况下,您可以将元组列表转换为具有相反顺序的新元组列表。然后,您可以将其转换为字典。然后,您可以将值查找为字典的键。

dict((v,k) for k,v in REFUND_STATUS).get("SUCCESS") # returns "S"