Django增删查改操作备份

本文介绍了Django中如何使用ORM进行数据的增删改查操作。包括创建新记录、删除记录、更新记录以及查询记录的具体步骤。

Django中数据的增删改查操作如下:

我们以一个model:User为例,User有三个字段,一个是username、passwd、phonenumber

(1)增加一条记录

添加一个username、passwd、phonenumber字段值为s_username、s_passwd、s_phonenumber的记录

user=User()

user.username=s_username

user.passwd=s_passwd

user.phonenumber=s_phonenumber

user.save()

user=User(username=s_username,passwd=s_passwd,phonenumber=s_phonenumber)

user.save()

(2)删除记录

删除一条username为‘yy’的记录

User.objects.get(username='yy').delete()

删除一组记录,假设一个电话号码可以对应多个user,现在要删除电话号码为‘123456’的所有用户

User.objects.filter(phonenumber='123456').delete()

(3)修改记录

把username为‘dw’的记录的手机号修改为‘88888’

user=User.objects.get(username='dw')

user.phonenumber='88888'

user.save()

(4)查询记录

查询用username为‘dw’的记录

user=User.objects.get(username='dw'),用get查询出来的记录是一个User对象

查询phonenumber为‘88888’的所有用户

user=User.objects.filter(phonenumber='88888') 用filter查询的结果得到的是一个列表

Django实现增删查改主要依赖于models,下面从不同方面介绍其实现方法: ### 定义模型 在 `models.py` 中定义模型,每个类对应数据库中的一张表。例如,创建一个 `Publisher` 模型: ```python from django.db import models class Publisher(models.Model): name = models.CharField(max_length=255) address = models.CharField(max_length=255) def __str__(self): return self.name ``` ### 实现增删查改操作 #### 增加数据 在视图函数中创建新的模型实例并保存到数据库。 ```python from .models import Publisher def add_publisher(request): if request.method == 'POST': name = request.POST.get('name') address = request.POST.get('address') publisher = Publisher(name=name, address=address) publisher.save() return HttpResponse('Publisher added successfully') ``` #### 删除数据 通过模型实例的 `delete` 方法删除数据。 ```python from .models import Publisher def delete_publisher(request, publisher_id): try: publisher = Publisher.objects.get(id=publisher_id) publisher.delete() return HttpResponse('Publisher deleted successfully') except Publisher.DoesNotExist: return HttpResponse('Publisher not found') ``` #### 查询数据 使用模型的管理器(如 `objects`)进行数据查询。 ```python from .models import Publisher def get_publishers(request): publishers = Publisher.objects.all() # 可以对查询结果进行进一步处理,如过滤、排序等 filtered_publishers = Publisher.objects.filter(name__startswith='A') return render(request, 'publishers.html', {'publishers': publishers}) ``` #### 修改数据 先获取要修改的模型实例,然后更新其属性并保存。 ```python from .models import Publisher def update_publisher(request, publisher_id): try: publisher = Publisher.objects.get(id=publisher_id) if request.method == 'POST': name = request.POST.get('name') address = request.POST.get('address') publisher.name = name publisher.address = address publisher.save() return HttpResponse('Publisher updated successfully') return render(request, 'update_publisher.html', {'publisher': publisher}) except Publisher.DoesNotExist: return HttpResponse('Publisher not found') ``` ### 使用序列化器(结合rest_framework框架) 如果使用 `rest_framework` 框架,可以定义序列化器来处理增删查改操作。 ```python from rest_framework import serializers from .models import Publisher class PublisherModelSerializer(serializers.ModelSerializer): class Meta: model = Publisher fields = '__all__' def create(self, validated_data): return Publisher.objects.create(**validated_data) def update(self, instance, validated_data): instance.name = validated_data.get('name', instance.name) instance.address = validated_data.get('address', instance.address) instance.save() return instance ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值