什么是django Queyset所有方法的内容或类型

时间:2013-12-01 15:51:17

标签: django django-queryset django-templates

假设我们有一个名为Person的模型。

class Person(models.Model)
    name = CharFiled(max_length=250)
    place = CharField(max_length=250)

当我们调用Person.object.all()时的视图,那么输出究竟是什么。

这是一个字典项列表吗?

我需要手动(硬编码)创建一个与Person.object.all()的返回类型完全相似的对象,并且我想将该手动创建的对象传递给模板进行显示。我的模板当前接受Person.object.all()并处理它并显示值,我需要我的模板以相同的方式接受手动创建的对象,这是创建类似对象的目的。

谢谢

2 个答案:

答案 0 :(得分:0)

创建类PersonManager:

class PersonManager(Manager):

    def specify_names(self):
        """ All peoples with name contan `J` letter """
        return self.filter(name__icontans='j')



class Person(models.Model)
    name = CharFiled(max_length=250)
    place = CharField(max_length=250)

    objects = PersonManager()

在视图中:

my_persons = Person.object.specify_names()

答案 1 :(得分:0)

all()方法返回QuerySet。在你评估它之前,它不会做任何数据库命中(通过评估我的意思 - 切片,酸洗,缓存,repr,len,list,bool)。迭代QuerySet时,它将利用您的数据库加载数据并仅在您需要时实例化模型对象。

请参阅:

https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated

如果你想模拟查询集,有一个很好的包可以做到这一点:

https://github.com/dcramer/mock-django