文章目录

囧书面试的过程中,面试官GG提出这样一个问题

  • 在DRY原则的驱动下,一直写ModelName.objects.filter(something)是很不科学的,怎样避免这样一个问题,可以根据传入的字符串找到这个model
  • 听到这个问题的时候我还一直以为是个django问题,拼命的回想有没有这样一种工具类能够根据model名找到model

  • 最后想了一下,这大概是个Python问题而不是django问题

结束面试的时间是14:08,半个小时内大概想到了这样几种办法

  • 0x00:处理好字符串后使用eval函数

  • 0x01:globals()返回的是命名空间中所有的对象字典,可以使用globals()[“ModelName”]

  • 0x02:views中处理models的部分单独出来,在另外文件中from app.models import *,同时在这个文件中设置一个字典,key为ModelName的字符串,value为这个class,定义函数返回这个class

1
2
3
4
5
6
7
8
9
from app.models import Book, Author
model_dict = {
'Book': Book,
'Author': Author
}
def get_model_by_name(model_name):
return model_dict[model_name]

(未测试能否可行)

文章目录