模型层单表操作

Posted zhangpang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型层单表操作相关的知识,希望对你有一定的参考价值。

模型层单表操作

单表操作

例:

1. 单表的查询

1. 单表查询所有用户:models.Book.objects.all()
得到的是 queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]
?
2. render(request, booklist.html, {book_list: ret})
?
3. 模板里: {% for user in book_list %}
                #要循环的内容 
                {{book.name}}
            {% endfor%}
            
4. get请求携带参数:
    http://127.0.0.1:8000/deleteuser/?id=1
    后台取值:request.GET.get(id)
    request.GET[id]
    
5. 前台post提交的数据取值:name=request.POST.get(name)

 

查询的API
all():                  查询所有结果
  
filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
  
get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象                        超过一个或者没有都会抛出错误。
  
exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
 
order_by(*field):       对查询结果排序(-id)
  
reverse():              对查询结果反向排序
  
count():                返回数据库中匹配查询(QuerySet)的对象数量。
  
first():                返回第一条记录
  
last():                返回最后一条记录
  
exists():              如果QuerySet包含数据,就返回True,否则返回False
 
values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                       model的实例化对象,而是一个可迭代的字典序列
                            
values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
 
distinct():            从返回结果中剔除重复纪录

 

基于双下划线的模糊查询
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__gte=100)
Book.objects.filter(price__lte=100)
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__contains="python")
Book.objects.filter(title__icontains="python")
Book.objects.filter(title__startswith="py")
Book.objects.filter(pub_date__year=2012)

 

2. 单表的删除

关键字: delete()
models.Book.objects.filter(id=id).delete()

 

3. 单表的增加

两种方式:
    1 book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
    
    2 book_obj=Book(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
book_obj.save()

 

4. 单表的修改

关键字: update()
Book.objects.filter(title__startswith="py").update(price=120)

 

前后端交互

<form action="/updateuser/?id={{ book.id }}" method="post">
   <p><input type="hidden" name="id" value="{{ book.id }}"></p>
   <p>书名: <input type="text" name="name" value="{{ book.name }}"></p>
   <p>价格: <input type="text" name="price" value="{{ book.price }}"></p>
   <p>出版社: <input type="text" name="publish" value="{{ book.publish }}"></p>
   <input type="submit" value="提交">
</form>

 

 

 

 

 

以上是关于模型层单表操作的主要内容,如果未能解决你的问题,请参考以下文章

Django基础五之django模型层单表操作

Django模型层:单表多表操作F与Q查询

sqlalchemy——单表操作

model,单表操作

Django模型层之单表操作

Django模型层:单表操作