我想在知道table_name
的同时检索Model
对象
例如:
class User(models.Model):
class Meta:
db_table = 'my_users_table'
是否有办法以User
作为输入返回my_users_table
?
答案 0 :(得分:4)
我想检索
Model
对象
我认为你的意思是这里的Model类而不是object。
我能想到的一个可能的解决方案是获取所有模型并匹配db_table
:
from django.apps import apps
model = next((m for m in apps.get_models() if m._meta.db_table=='my_users_table'), None)
如果没有具有给定db_table名称的模型,则model
将为None
。
答案 1 :(得分:2)
我认为没有直接的方法可以做到这一点。但是你可以创建自己的功能,为你做这件事。
基于https://stackoverflow.com/a/29739109/3627387
from django.apps import apps
def get_model_by_db_table(db_table):
for model in apps.get_models():
if model._meta.db_table == db_table:
return model
else:
# here you can do fallback logic if no model with db_table found
raise ValueError('No model found with db_table {}!'.format(db_table))
# or return None
或者您可以使用ContentType型号
执行此操作