假设我们有一个名为Person的模型。
class Person(models.Model)
name = CharFiled(max_length=250)
place = CharField(max_length=250)
当我们调用Person.object.all()时的视图,那么输出究竟是什么。
这是一个字典项列表吗?
我需要手动(硬编码)创建一个与Person.object.all()的返回类型完全相似的对象,并且我想将该手动创建的对象传递给模板进行显示。我的模板当前接受Person.object.all()并处理它并显示值,我需要我的模板以相同的方式接受手动创建的对象,这是创建类似对象的目的。
谢谢
答案 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
如果你想模拟查询集,有一个很好的包可以做到这一点: