Django model-get()方法

首先说一些注意点

  • get()方法是不返回QuerySets的方法
  • 不返回QuerySets的方法,不使用缓存,它们每次被调用都会去查询数据库
  • 语法:get(**kwargs)
  • 功能:返回与给定查找参数匹配的对象。
  • 注意点:填写的参数对象必须是唯一的。例如主键或者唯一约束中的字段。
  • 🌰1
# 查询Entry数据库表中id=1的数据。返回也是返回这个数据的对象
Entry.objects.get(id=1)

Entry.objects.get(blog=blog, entry_number=1)
  • 🌰2:如果希望查询集已经返回1行,可以使用get()不带任何参数的该行的对象
# 先用filter()找到id为1的值,然后再用get()方法获取具体的对象。
# filter是获取一个对象集,get是获取某个具体的对象
Entry.objects.filter(pk=1).get()
  • 如果get()找不到任何对象,会引发Model.DoesNotExist异常
Entry.objects.get(id=-999) # raises Entry.DoesNotExist
  • 如果get()发现多个对象,会引发Model.MultipleObjectsReturned异常
Entry.objects.get(name='A Duplicated Name') # raises Entry.MultipleObjectsReturned
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Django Rest Framework 示例: 首先,安装 `django` 和 `djangorestframework`: ``` pip install django pip install djangorestframework ``` 在项目中创建一个新的应用程序: ``` python manage.py startapp myapp ``` 在 `myapp` 应用程序的 `models.py` 中定义一个模型: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) publication_date = models.DateField() price = models.DecimalField(max_digits=5, decimal_places=2) def __str__(self): return self.title ``` 在 `myapp` 应用程序的 `serializers.py` 中定义一个序列化器: ```python from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = '__all__' ``` 在 `myapp` 应用程序的 `views.py` 中定义一个视图: ```python from rest_framework import generics from .models import Book from .serializers import BookSerializer class BookList(generics.ListCreateAPIView): queryset = Book.objects.all() serializer_class = BookSerializer class BookDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Book.objects.all() serializer_class = BookSerializer ``` 现在,在项目的 `urls.py` 文件中,将以下 URL 映射到我们的新视图: ```python from django.urls import path from myapp.views import BookList, BookDetail urlpatterns = [ path('books/', BookList.as_view(), name='book-list'), path('books/<int:pk>/', BookDetail.as_view(), name='book-detail'), ] ``` 现在,我们可以使用 Django Rest Framework 测试我们的 API。启动 Django 开发服务器: ``` python manage.py runserver ``` 在浏览器中访问 `http://localhost:8000/books/`,你应该看到一个空的 JSON 数组。现在,我们可以使用 POST 请求添加一些书籍: ``` curl -X POST -H 'Content-Type: application/json' -d '{"title": "My Book", "author": "John Smith", "publication_date": "2021-01-01", "price": 19.99}' http://localhost:8000/books/ ``` 现在,我们可以使用 GET 请求获取所有书籍: ``` curl http://localhost:8000/books/ ``` 我们还可以使用 GET 请求获取单个书籍: ``` curl http://localhost:8000/books/1/ ``` 最后,我们可以使用 PUT 或 PATCH 请求更新书籍: ``` curl -X PUT -H 'Content-Type: application/json' -d '{"title": "My Book Revised", "author": "John Smith", "publication_date": "2021-01-01", "price": 24.99}' http://localhost:8000/books/1/ ``` 还可以使用 DELETE 请求删除书籍: ``` curl -X DELETE http://localhost:8000/books/1/ ``` 这就是一个简单的 Django Rest Framework 示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值