我需要所有对象,例如SomethingModel.objects.all()
。
class SometingModel(model.Model):
def get_all_objects(self):
__[what should i do?]__
return queryset
例如,
queryset = SomethingModel.objects.all()
queryset_by_instance = SomethingModel.objects.get(pk=1).get_all_objects()
queryset == queryset_by_instance <===== True {doesn't matter order}
我需要这个来进行数据提取,例如
def get_filtered_data(object, object_attribute, min, max):
return object.get_all_objects().filter(object_attribute__lte=max)\
.filter(object_attribute__gte=min)
最佳答案
您可以使用__class__
获取模型名称,然后获取所有对象。
In [1]: my_instance.__class__
Out[1]: app_name.models.SometingModel # returns the model
In[2]: my_instance.__class__.objects.all()
Out[2]: [..list of objects..] # returns queryset
另一种选择是使用
_meta.model
,@Spectras也在上面提到过。In[3]: my_instance._meta.model
Out[3]: app_name.models.SometingModel # returns the model
In[4]: my_instance._meta.model.objects.all()
Out[4]: [..list of objects..] # returns queryset
然后,在模型中,您可以执行以下操作:
class SometingModel(model.Model):
def get_all_objects(self):
queryset = self._meta.model.objects.all()
# can use the below method also
# queryset = self.__class__.objects.all()
return queryset
关于python - 如何在Django中按实例获取所有对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31868934/