我有兩種不同的模型,我希望在不同的時間使用公共字段名稱進行類似的過濾,所以我編寫了一個單一的上下文函數,通過將字符串作爲字符串用作模型名稱的參數。現在我正在使用eval(),但是我的直覺告訴我這是一個嚴重的錯誤。是否有更多pythonic方式來做我所描述的?將模型名稱作爲字符串傳遞的最佳做法
這裏是我的代碼看起來像此刻一個縮短版:
def reference_context(model, value):
menu = main_menu()
info = company_info()
pages = get_list_or_404(eval(model), category = value)
其次,有沒有辦法通過以類似的方式關鍵字,這樣我就可以沿着線的東西:
def reference_context(model, category, value):
menu = main_menu()
info = company_info()
pages = get_list_or_404(eval(model), eval(category) = value)
關於任何其他問題的評論是受歡迎的,也是極大的鼓勵。
爲什麼您需要將模型作爲字符串傳遞而不是作爲參考?例如。 reference_context(MyModel,value) –
據我所知,並不常見。在這種情況下,我會自己明確地註冊名稱 - >模型(一個簡單的字典將會這樣做)並使用它。這樣,當有人在表單中注入「用戶」作爲模型時,可以避免意外的安全問題。 –