Django之模型二

前面讲了模板也就是数据库的创建,那么如何对这些数据库进行更新呢,道理也是根据url中的信息。

http://127.0.0.1:8001/create/?name=zhf&age=30

输入如下地址,其中name=zhf,age=30.

Person2的模板如下:包含name和age两个字段。

class Person2(models.Model):

    name=models.CharField(max_length=40)

    age=models.IntegerField()

    def __unicode__(<span lang="EN-US" style="" font-size:"="">self):

        return self.name
url中添加如下的链接:url(r'^create/$',views.create),

views中代码如下:首先从网页中得到name和age两个参数。然后创建数据库,有如下几种方法:

方法1:

p2=Person2.objects.create(name=name1,age=age1)
方法2:
p2=Person2(name=name1,age=age1)
p2.save
方法3:
p2=Person2()
p2.name=name1
p2.age=age1
p2.save()
方法4:这个方法首先判断是否存在,如果存在则返回True,否则返回False
ret=Person2.objects.get_or_create(name=name1,age=age1)

代码如下

def create(request):
    name1=request.GET['name']
    age1=request.GET['age']
    p2=Person2.objects.create(name=name1,age=age1)
    result=Person2.objects.filter(name=name1)
    return render(request,'index.html',{'ret':result})

 最终的网页代码显示如下:Person2.objects.filter(name=name1)是一个过滤函数,可以看到显示创建了一个Person2的实例



上面的是创建函数,可以单独写一个查询的函数:注意这里使用的是Person2.objects.get而不是filter。是因为get是用来获取一个对象的,如果需要查找全部的人,则用filter, 所以filter返回的是一个集合。

def inquery_infor(request):
    name1=request.GET['name']
    result=Person2.objects.get(name=name1)
    age=result.age
    return render(request,'index.html',{'age':age})

查询结果如下:

 


如果用filter的方法,则会报错:

def inquery_infor(request):
    name1=request.GET['name']
    result=Person2.objects.filter(name=name1)
    age=result.age
    return render(request,'index.html',{'age':age})

提示QuerySet对象没有age属性



代码改成如下就OK了:

age=[]

for p in Person2.objects.filter(name=name1):
    age.append(p.age)

结果如下:



下面的语句可以用来删除掉对应的数据库

for p in Person2.objects.filter(name="zhf"):
        p.delete()

 

网页中返回多个参数只能用如下的方式:

return render(request,'home.html',{'table_test':table_test,"age_show":age_show})

而不能用:在render中只能用一个字典。

return render(request,'home.html',{'table_test':table_test},{"age_show":age_show})
 
前面的查找其实内部都是用的数据库语言,也可以查看对应查询数据库的语言:
ret=Person2.objects.filter(name=name1).query


后面会接续介绍模型的其他功能


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿与代码

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值