码迷,mamicode.com
首页 > 其他好文 > 详细

django-模型

时间:2016-03-26 08:10:48      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:django、模型、链表结构

模型

    新建对象:

        Person.objects.create(name=name,age=age)

        p = Person(name="WZ", age=23)

        p.save()

        p = Person(name="TWZ")

        p.age = 23

        p.save()

        Person.objects.get_or_create(name="WZT", age=23)

        这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False.


    获取对象:

        models.Tb1.objects.filter(name=‘seven‘).count() #获取个数

        Person.objects.all()

        Person.objects.all()[:10] 切片操作,获取10个人,不支持负索引,切片可以节约内存

        Person.objects.get(name=name)

        Person.objects.filter(name="abc") # 等于Person.objects.filter(name__exact="abc") 名称严格等于 "abc" 的人

        models.Tb1.objects.filter(id__gt=1)              # 获取id大于1的值

        models.Tb1.objects.filter(id__lt=10)             # 获取id小于10的值

        models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

        models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据

        models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in

        models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and

        Person.objects.filter(name__iexact="abc") # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件

        Person.objects.filter(name__contains="abc") # 名称中包含 "abc"的人

        Person.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写

        Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person对象

        Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名称含有abc, 但是排除年龄是23岁的

        Person.objects.filter(name__regex="^abc") # 正则表达式查询

        Person.objects.filter(name__iregex="^abc")# 正则表达式不区分大小写


    删除对象:

            Person.objects.filter().delete()

            Person.objects.all().delete()


    修改对象

        models.Tb1.objects.filter(name=‘seven‘).update(gender=‘0‘)  # 将指定条件的数据更新,均支持 **kwargs

        obj = models.Tb1.objects.get(id=1)#修改单条数据

        obj.c1 = ‘111‘

        obj.save()                                                 



连表结构

这个一对多、多对多一直困扰着我,自学的时候都没搞明白,这次专门听课,又不怎么太明白,闲着无聊就问女朋友,啥叫一对多

啥叫多对多,她很自然的说:一对多,就是一个打多个,多对多就是,两帮人乱打。草泥马,瞬间我明白了。

    一对多(外键)models.ForeignKey

    在django的模型中,可以简单的理解为,一个表的外键的值是另一个表的主键。

    

        定义两个模型,一个是书,一个是出版社,是一对多的类型。

        class Publisher(models.Model):

            name = models.CharField(max_length=30)

            address = models.CharField(max_length=50)

            website = models.URLField()

            def __unicode__(self):

                return self.name

        

        class Book(models.Model):

            title = models.CharField(max_length=100)

            authors = models.ManyToManyField(Author)

            publisher = models.ForeignKey(Publisher)

            publication_date = models.DateField()

            def __unicode__(self):

                return self.title

    

        查询书籍的出版商是谁,

        p = Book.objects.get(查询条件)

        p.publisher

        

        如果我们要查询一个出版商出版了哪些书籍的话,那我们要怎么做呢?

        先查询到出版商的信息

        p = Publisher.objects.get(查询条件)

        p.book_set.filter(过滤条件)


    多对多 models.Many-to-Many

    定义两个模型,一个是书,一个是作者,是多对多的类型。

        class Author(models.Model):

            first_name = models.CharField(max_length=30)

            last_name = models.CharField(max_length=40)

            email = models.EmailField()

            def __unicode__(self):

                return u‘%s %s‘ % (self.first_name, self.last_name)

        

        class Book(models.Model):

            title = models.CharField(max_length=100)

            authors = models.ManyToManyField(Author)

            publisher = models.ForeignKey(Publisher)

            publication_date = models.DateField()

            def __unicode__(self):

                return self.title


        查询书籍的作者有谁

        b = Book.objects.get(查询条件)

        b.authors.all()

        

        如果我们要查询一个作者出版了哪些书籍的话,那我们要怎么做呢?

        先查询到出作者的信息

        a = Author.objects.get(查询条件)

        a.book_set.filter(过滤条件)

django-模型

标签:django、模型、链表结构

原文地址:http://lxb994.blog.51cto.com/9805112/1755373

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!