简单的介绍下增删改
class MyOperations(View):
def get(self, request):
# objects已经集成了数据库的增删改查操作
# 新建
name = User.objects.get_or_create(name='啊哈', age=80, phone_number='88888888')
user = User()
user.name = '李四'
user.age = 99
user.phone_number = '12345678'
user.save()
# 查询
user = User.objects.get(id=1)
users=User.objects.all()
print(users)
# 更新
user=User.objects.filter(id=1).update(age=9999)
# 删除
user = User.objects.get(id=1)
user.delete()
return render(request, 'User.html')
class User(models.Model):
name = models.CharField(max_length=20, blank=True, null=True)
age = models.IntegerField(default=0)
phone_number = models.EmailField(blank=True, default='')
# 创建时添加
created_time = models.DateTimeField(auto_now_add=True)
# 更新时变更时间
modified_time = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
详细的介绍下查询📖
查询方式分类
- 原生SQL
Table.objects.raw('select * from table')
- 基于ORM
Table.objects.filter(name='xxx')
基于ORM常用的查询方法
可以通过dir(Table.objects)
查询objects的方法:
['__class__', '__class_getitem__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slotnames__', '__str__', '__subclasshook__', '__weakref__', '_constructor_args', '_db', '_get_queryset_methods', '_hints', '_insert', '_queryset_class', '_set_creation_counter', '_update', 'aggregate', 'alias', 'all', 'annotate', 'auto_created', 'bulk_create', 'bulk_update', 'check', 'complex_filter', 'contribute_to_class', 'count', 'create', 'creation_counter', 'dates', 'datetimes', 'db', 'db_manager', 'deconstruct', 'defer', 'difference', 'distinct', 'earliest', 'exclude', 'exists', 'explain', 'extra', 'filter', 'first', 'from_queryset', 'get', 'get_or_create', 'get_queryset', 'in_bulk', 'intersection', 'iterator', 'last', 'latest', 'model', 'name', 'none', 'only', 'order_by', 'prefetch_related', 'raw', 'reverse', 'select_for_update', 'select_related', 'union', 'update', 'update_or_create', 'use_in_migrations', 'using', 'values', 'values_list']
其中常用的查询方法有:
- Table.objects.all() 返回Table表中所有的数据
- Table.objects.get(xx=xxx) 返回Table表中满足条件的一条数据
- Table.objects.filter(xx=xxx) 返回Table表中满足条件的一条/多条数据
- 值得注意的是,如果未查询到满足条件的数据,
Table
.objects.get(
xx=xxx
)
会抛出异常,Table
.objects.filter(
xx=xxx
)
则返回空数据
- 值得注意的是,如果未查询到满足条件的数据,
- Table.objects.all()/filter().exists() 返回是否有对象,True/False
- Table.objects.all()/filter().count() 返回获取到的对象的数量
- Table.objects.all()/filter().exclude(xx=xxx) 返回的数据中排除满足xx=xxx的
- Table.objects.filter().distinct(‘name’) 返回的数据中按照列name去重
- Table.objects.filter().order_by(‘name’) 返回的数据中按照列name排序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135453.html