我试图避免在我的代码中出现硬编码情况
如果有一个客户查询集,例如列是(姓名、电话、电子邮件……)
如果我这样做
customer = Customer.objects.get(name = 'bbc')
# to get the values of each field I need to do
customer.name
customer.phone
customer.email
……
为了避免必须这样做,因为我需要比较 If 语句中的每个字段以不对表单进行任何更改,我制作了一个包含列名的列表
if 语句的例子
if customer.name == some variable or customer.email == some vairiable …..
我制作了一个包含列名的列表来避免这个问题
list = ['姓名', '电话', '邮箱']
当我这样做的时候
for loop
if customer.list[i] == some variable
我得到一个错误客户不包含属性列表
我怎样才能解决这个问题
提前致谢
请您参考如下方法:
你应该在这里使用 {getattr(..) [Python-doc]]( https://docs.python.org/3/library/functions.html#getattr )。您可以将条件替换为:
if any(getattr(customer, li) == some_variable for li in mylist):
# ...
尽管比较本质上是 正交 维度的所有场与同一个变量看起来很奇怪。
