Skip to main content
 首页 » 编程设计

python之将 Django 模型属性名称传递给函数

2025年05月04日9lhb25

我想在 Django 中构建一个函数来迭代查询集中的一组对象,并根据任意属性的值执行某些操作。对象的类型是固定的;假设它们肯定来自 Comment 模型,如下所示:

class Comment(models.Model): 
    name = models.CharField(max_length=255) 
    text = models.TextField() 
    email = models.EmailField() 

有时我想在 name 上运行函数,但其​​他时候在 email 上运行。我想知道如何编写和调用如下所示的函数:

def do_something(attribute, objects): 
    for object in objects: 
        # do something with the object based on object.attribute 
    return results 

请您参考如下方法:

def do_something(attribute, objects): 
    results = [] 
    for object in objects: 
        if hasattr(object, attribute): 
            results.append(getattr(object, attribute)) 
    return results 

或者,更简洁地说,

def do_something(attribute, objects): 
    return [getattr(o, attribute) for o in objects if hasattr(o, attribute)]