需求:傳入的是函數名、屬性名,想通過字符串調用函數,接近屬性。
通過字符串接近、變動屬性
變量:model_name, field_name
# 獲取 model model = AppConfig.get_model(model_name) # 獲取 field_name 的值 getattr(model, field_name) # 變動 field_name 對應的值,比如 + 1 # 使用 Django F from django.db.models import F reporter = Reporters.objects.get(name='Tintin') reporter.stories_filed = F('stories_filed') + 1 reporter.save() # 那么使用字符串如何實現上面的 # 查找 setattr 方法幫助 # setattr(x, 'foobar', 123) is equivalent to x.foobar = 123. setattr(model, field_name) = F(field_name) + 1
連接 django 的 Q
from django.db.models import Q query = Q() for entry in a: query = query | Q(my_field__contains=entry)