Skip to main content
 首页 » 编程设计

python之使用列名称的辅助列表访问 Django 查询集的值

2024年09月03日46webabcd

我试图避免在我的代码中出现硬编码情况

如果有一个客户查询集,例如列是(姓名、电话、电子邮件……)

如果我这样做

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): 
    # ...

尽管比较本质上是 正交 维度的所有场与同一个变量看起来很奇怪。