如何比较模型字段和选择中的unicode字符串? django的

时间:2017-05-29 01:12:44

标签: python django if-statement unicode compare

我不确定哪个部分我做错了但不知何故我试图比较两个值并且我100%确定它们匹配但不知何故代码不会执行。

我们说我有这个模型(请原谅模型和字段名称有点拼写错误)

class TestOne(models):
    gender = models.Charfield(max_length=10, choices=GENDER_CHOICES)

我的选择

GENDER_CHOICES = (("MALE", "MALE"), ("FEMALE", "FEMALE"))

我确信我的gender字段为MALE对象,所以我在做这个陈述,检查它是否MALE做了什么。

if a.gender is `MALE`:
    # do something here

但它永远不会达到真实。我检查a.genderunicode类型,所以我甚至做了str(a.gender)以确保它也是一个字符串但仍然没有运气。

我在这里做错了吗?

P.S。我使用a.gender进行了打印,并确保输出为MALE

提前致谢

1 个答案:

答案 0 :(得分:6)

不要这样做:

if a.gender is 'MALE':
# equivalent to:
# id(a.gender) == id('MALE')

改为:

if a.gender == 'MALE':

'is'关键字检查对象标识,即两个变量/对象是否引用相同的内存地址。 '=='检查类''__eq__'方法中定义的相等性,在您的情况下,它将执行预期的字符串比较。

检查Is there a difference between `==` and `is` in Python?以获取详细说明。