Python,Django,如何使用getattr(或其他方法)来调用具有多个属性的对象?

Ric*_*ick 5 python django code-reuse object getattr

在尝试让它工作一段时间并且四处搜索之后我真的很难过,所以我在这里发帖...我想在我为django编写的类中创建一些函数尽可能通用,所以我想使用getattr来调用通用方式如下所示的函数:

我这样做的方式(非通用方式):

from django.db.models import get_model
mymodel = get_model('appname', 'modelname')
dbobject = mymodel.objects.all()
Run Code Online (Sandbox Code Playgroud)

我的一个尝试以通用的方式创建它,仍然无法正常工作,它确实返回一些东西,但它不是正确的对象类型,以便我可以从中获取数据(它是django的数据库调用)

ret = getattr(mymodel,'objects')
dbobject = getattr(ret,'all')
Run Code Online (Sandbox Code Playgroud)

Dun*_*can 12

你忘了给结果打电话了.

dbobject = mymodel.objects.all()
Run Code Online (Sandbox Code Playgroud)

访问该方法mymodel.objects.all然后调用它.

ret = getattr(mymodel,'objects')
self.dbobject = getattr(ret,'all')
Run Code Online (Sandbox Code Playgroud)

访问该方法mymodel.objects.all但不调用它.

您所需要的只是将最后一行更改为:

self.dbobject = getattr(ret,'all')()
Run Code Online (Sandbox Code Playgroud)