zoukankan      html  css  js  c++  java
  • django中的objects.get和objects.filter方法的区别

    为了说明它们两者的区别定义2个models 
    class Student(models.Model): 
          name = models.CharField('姓名', max_length=20, default='') 
          age = models.CharField('年龄', max_length=20, default='') 
    class Book(models.Model): 
          student = models.ForeignKey(Student) 
    一.先说下django的obj.get(): 
    django的get是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。
    比如我数据库里有一条记录,记录的name的值是"django"的话,我用student = Student.objects.get(name='django'),
    返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。
    而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。
    比如:student = Student.objects.get(name='python')

    如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。
    比如我的student表里有一个记录:
    id name age
    1 python 24

    book表:

    id student_id
    1 1
    2 1

    我用
    student = Student.objects.get(name='python')
    book = Book.objects.get(student)
    它也会报错,因为book表有2条记录和student表相匹配。

    二.再说下django filter:

    django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
    比如我数据库里有一条记录,记录的name的值是Python的话,我用student = Student.objects.filter(name='python')
    它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。
  • 相关阅读:
    HDU 2544 最短路
    HDU 3367 Pseudoforest
    USACO 2001 OPEN
    HDU 3371 Connect the Cities
    HDU 1301 Jungle Roads
    HDU 1879 继续畅通工程
    HDU 1233 还是畅通工程
    HDU 1162 Eddy's picture
    HDU 5745 La Vie en rose
    HDU 5744 Keep On Movin
  • 原文地址:https://www.cnblogs.com/ellisonzhang/p/10612880.html
Copyright © 2011-2022 走看看