2017-05-29 40 views
0

我不知道哪一部分我做错了,但不知何故,我试图比较两个值,我100%确定他们匹配,但不知何故代码将不会执行。如何比较模型字段和选项中的unicode字符串? django

比方说,我有这样的模型(请原谅的模型和字段的名称有点错别字)

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

我的选择

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

我很相信我的genderMALE为对象,所以我正在做这个声明作为检查,如果它是MALE做些什么。

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

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

我在这里做错了什么吗?

P.S.我做了一个打印与a.gender并确保输出是MALE

在此先感谢

回答

4

不要做:

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?的详细说明。

+0

Thx thx,我能说的是和JavaScript中的triple =相同吗? – Dora