我想在 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)]
