Django-查询相关API(创建、检索、更新和删除对象)

首先我们创建一个模型,之后可以在这个模型中进行创建、检索、更新和删除对象等。

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def __str__(self):
        return self.name
        
class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()

    def __str__(self):
        return self.name
class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    authors = models.ManyToManyField(Author)
    number_of_comments = models.IntegerField()
    number_of_pingbacks = models.IntegerField()
    rating = models.IntegerField()

    def __str__(self):
        return self.headline

创建对象并进行保存更新操作

  • 创建对象

要创建对象,应使用模型类的关键字将你在model.py文件里面创建的数据库表类进行实例化,然后调用save()方法将其保存到数据库中。(save()方法详细使用方法:save()
🌰如下,假设model存在于mysite/blog/models.py中

from blog.models import Blog

b = Blog(name='Beatles Blog', tagline='All the latest Beatles news')
b.save() 

Tips:

  • 创建对象并保存时,数据库方面执行的是INSERT语句。
  • 如果不显示调用save()方法,Django是不会访问数据库将数据进行保存的。
  • save()方法没有返回值。
  • 将更改保存至object
b5.name() = 'New name'
b5.save()

Tips:

  • 更改时,数据库方面执行的是UPDATE语句
  • 如果不显示调用save()方法,Django是不会访问数据库将数据进行保存的。
  • 更新ForeignKey类型的object(多对一关系)
    保存ForeignKey类型的工作原理和保存普通字段的工作原理是一样的,都是将正确类型的对象分配给相关字段。
    🌰:更新blog的属性Entry,例如entry。(前提条件是数据库表Entry和Blog已经保存到数据库中)
from blog.models import Blog,Entry

# 获取Entry数据表中主键为1的数据
entry = Entry.object.get(pk=1) 

# 获取Blog数据表中name=Cheddar Talk的数据
cheese_blog = Blog.objects.get(name="Cheddar Talk") 

# 更新entry中blog的值为cheese_blog
entry.blog = cheese_blog 
entry.save()
  • 更新ManyToManyField类型的object (多对多关系)
    更新ManyToManyField类型的工作方式有些许不同,需要使用add()方法关系中添加记录(add()方法详细使用方法:add()
    🌰:将Author实例添加到entry对象
from blog.models import Author

# 创建一个name=Joe的数据并将其保存至至Author数据表中,返回一个新创建的数据。
# 相当于先实例化数据库表类,再使用save()进行保存
joe = Author.objects.create(name="Joe")

# 将name=Joe数据添加至Entry数据表中
entry.author.add(joe)

如果想在ManyToManyField一次性添加多个记录,可以在add()方法中添加多个参数,如下

john = Author.objects.create(name='John')
paul = Author.objects.create(name="Paul")
george = Author.objects.create(name="George")
ringo = Author.objects.create(name="Ringo")
entry.authors.add(john, paul, george, ringo)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值