簡體   English   中英

Django,如何動態訪問對象的相關模型

[英]Django, How to access dynamically, related models of object

我有模型實例User。

用戶與另外兩個模型model1model2有兩個1對1關系。 我不想做user.model1相反,我想做這樣的事情:

model_name = 'model1'
user.__dict__[model_name]

我發現我可以通過以下方式做到這一點:

user.__dict__['_wrapped'].__dict__['_' + model_name + '_cache]

但是我覺得很丑,還有另一種方法嗎?

您可以使用getattr(..) [Python-doc]

getattr(user, 'model1')

getattr(..)是內置的Python函數,而getattr(x, 'y')對應於xy (請注意,對於getattr(..) ,第二個參數是字符串)。

如果對象(此處為user )具有屬性model1 ,它將引發AttributeError getattr(..)也可以采用三個參數:第三個參數用作默認值,因此如果屬性non_existing_attribute不存在,則getattr(user, 'non_existing_attribute', None)將返回None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM