需求:傳入的是函數名、屬性名,想通過字符串調用函數,接近屬性。
通過字符串接近、變動屬性
變量: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)
