
1.queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
2.Objects是django实现的mvc中的m,Django中的模型类都有一个objects对象,它是一个Django中定义的QuerySet类型的对象,它包含了模型对象的实例。
3.不能,因为get可能会有异常,可以用filter函数,如下
>>>Entry.objects.filter(blog__id__exact=1)# 显示的使用__exact
>>>Entry.objects.filter(blog__id=1)# 隐含的使用__exact>>>Entry.objects.filter(blog__pk=1)# __pk 相当于 __id__exact
不评价你的解决方案。你的模板比我还熟悉。 只是我感觉,你可能走了弯路。模块只是用来处理一些简单的循环的。并不足以做复杂的算法。那是python最擅长的。
所以你在python里加工一下。形成似乎列表的结构。然后象“打印机”一样,直接在模板里顺序打出来就可以了。
所谓MVC,并不是说所有的视图都是让模板完成,所有的数据逻辑都是MODEL来完成。实际上现实工程里,比MVC的逻辑要复杂,更多层。 没有必要将这个通用化复杂化。 很多时候,ALL-IN-ONE。
所有的东西都有VIEWER里简单完成,这样的代码可读性,可维护性更好。这就达到软件工程的目标了。
from django.db import modelsclass Document(models.Model):
name = models.CharField(max_length=255)
format = models.ForeignKey('Format')
class Comment(models.Model):
document = models.ForeignKey(Document, related_name='comments')
content = models.TextField()
class Format(models.Model):
type = models.CharField(choices=( ('Text file', 'text'),
('ePub ebook', 'epub'),
('HTML file', 'html')),
max_length=10)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)