我不确定哪个部分我做错了但不知何故我试图比较两个值并且我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)
以确保它也是一个字符串但仍然没有运气。
我在这里做错了吗?
P.S。我使用a.gender
进行了打印,并确保输出为MALE
提前致谢
答案 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?以获取详细说明。