【问题标题】:how to compare a unicode string in model field and choices? django如何比较模型字段和选项中的 unicode 字符串? django
【发布时间】:2017-05-29 01:12:44
【问题描述】:

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

我在这里做错了吗?

附:我用a.gender 打印并确保输出为MALE

提前致谢

【问题讨论】:

    标签: python django if-statement unicode compare


    【解决方案1】:

    不要这样做:

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

    【讨论】:

    • Thx thx,我能说它与 JavaScript 中的三重 = 相同吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2022-07-22
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2012-06-06
    相关资源
    最近更新 更多