赞
踩
F()函数在Django中是一个非常强大的工具,主要用于在查询表达式中引用模型的字段。它允许你在数据库层面执行各种操作,而无需将数据加载到Python内存中。这不仅提高了性能,还允许你利用数据库的优化功能。
在查询表达式中引用模型的字段,例如
F('field_name')
可以使用F()函数执行算术运算,如加、减、乘、除等,例如
F('price') + 10
或
F('quantity') * F('price')
Case
和
When
表达式,F()函数可以用于创建复杂的条件逻辑,例如
Case(When(F('age') > 18, then='adult'), default='minor')
在更新操作中,F()函数可以用于基于现有字段值的更新,例如
Model.objects.update(field=F('field') + 1)
F()函数可以与数据库特定的函数结合使用,例如
Length(F('name'))
或
Lower(F('name'))
F()函数可以用于字段间的运算,例如
Model.objects.annotate(total=F('field1') + F('field2'))
Test/app11/models.py
- from django.db import models
-
- class Post(models.Model):
- title = models.CharField(max_length=200)
- content = models.TextField()
- pub_date = models.DateTimeField('date published')
-
-
-
-
- class Book(models.Model):
- title = models.CharField(max_length=100)
- author = models.CharField(max_length=100)
- publication_date = models.DateField()
- price = models.DecimalField(max_digits=5, decimal_places=2)
-
- def __str__(self):
- return self.title
Test/app11/views.py
- from django.shortcuts import render
- from django.db.models import F
-
- def book_list11(request):
-
- # 对数据价格进行更新
- books = Book.objects.update(price=F('price') -100)
-
- # author_name = "小龙"
- # # 查询指定作者的所有书籍,并增加价格
- # books =Book.objects.filter(author=author_name).update(price=F('price') + 10)
-
- return HttpResponse("数据已更新")
- # return render(request, '11/book_list.html', {'books': books})
-
Test/app11/urls.py
- from django.urls import path
- from . import views
-
- urlpatterns = [
-
- path('book_list11/', views.book_list11, name='book_list11'),
-
- ]
127.0.0.1:8000/app11/book_list11/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。