Skip to main content
 首页 » 编程设计

python之如何比较模型字段和选择中的 unicode 字符串 Django

2025年05月04日24www_RR

我不确定我做错了哪一部分,但不知何故我试图比较两个值,我 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.gender 是一个 unicode 类型所以我什至做了 str(a.gender) 以确保它也是一个字符串但仍然没有运气。

我是不是做错了什么?

附言我使用 a.gender 进行打印,并确保输出为 MALE

提前致谢

请您参考如下方法:

不要做:

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?详细解释。