Django 如何动态查找字段

Django How to dynamically lookup fields

我想做这样的事情:

before = [ rec.field for rec in all_relevant_records ]

# Do some operation on the all_relevant_records:
for rec in all_relevant_records:
    rec_pk = rec.pk
    new_field = get_new_field(rec, field)
    db.objects.filter(pk=rec_pk).update(field=new_field)

after = [ rec.field for rec in all_relevant_records ]

但是,这不起作用,因为无法将字段解析为查询集字段。

我看过How to dynamically provide lookup field name in Django query?但是,这不是我想要的。

感谢任何帮助

当你这样做时:

db.objects.filter(pk=rec_pk).update(field=new_field)

您正在使用关键字参数。相当于:

db.objects.filter(**{'pk': rec_pk}).update(**{'field': new_field})

所以如果field不是你的字段名,而是一个包含你字段名的变量,你要做的是:

db.objects.filter(pk=rec_pk).update(**{field: new_field})

关于这个:

before = [ rec.field for rec in all_relevant_records ]

我不确定你想达到什么目的,但我想应该是这样的:

before = [getattr(rec, field) for rec in all_relevant_records]