2017-05-29 39 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