Django 保存数据

本文介绍了在Django框架中如何通过`model_name.objects.create()`、实例化对象并手动设置属性以及`get_or_create()`方法创建模型实例。还详细讲解了如何使用`save_task`函数保存、`update`方法更新和`delete`方法删除`Tasks`表中的数据。
摘要由CSDN通过智能技术生成

在定义完模型(表)后,就可能向模型(表)写入数据,相关于创建模型对象实例,有几种方法用来创建实例

1)model_name.objects.create(字段名1 = "xx", 字段名1 = "xx")

2)x = model_name ()

x.字段名1 = "xx"

x.字段名2 = "xx"

x.save()

3)model_name.objects.get_or_create(字段名1 = "xx")

新增或更新,可以防止数据重复,但是速度要相对慢些,

返回一个元组,第一个为1)model_name对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False。

一,保存数据

基于前面的模型定义,编写一个保存模型数据的方法:

在myweb\web中新建一个database.py,用于保存数据,编辑内容如下:

from models import Tasks

#保存任务表信息

def save_task(task_infos):

    task_info =Tasks()

    task_info.task_name = task_infos['task_name']

    task_info.task_user = task_infos['task_user']

    task_info.task_describe = task_infos['task_describe']

    task_info.task_start_date = task_infos['task_start_date']

    task_info.task_end_date = task_infos['task_end_date']

    task_info.save()

二,更新数据

修改数据是经常发生的,比如要更新某个单的审核状态。

在上面的函数中,发现模型最后一个字段没有保存,那新增数据后,可以用update来更新:

Tasks.objects.filter(task_name='xxx').update(task_result='已完成')

这里用到filtera获取数据,再用update来更新字段的内容。后面章节将介绍更多的获取数据的方法。

三,删除数据

使用delete方法直接删除数据

Tasks.objects.filter(task_name='xxx').delete()

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,你可以通过使用信号(signals)来保存数据修改记录。下面是一个示例,演示如何使用Django的信号来实现保存数据修改记录。 首先,在你的应用中创建一个`signals.py`文件,用于定义信号处理函数。这个文件应该与你的models.py文件处于同一个目录下。 ```python from django.db.models.signals import pre_save from django.dispatch import receiver from django.contrib.admin.models import LogEntry @receiver(pre_save) def save_model_change(sender, instance, **kwargs): if not instance.pk: # 如果是新的对象(即没有主键),则不保存修改记录 return # 获取原始数据 original_data = sender.objects.get(pk=instance.pk) # 比较字段值是否发生变化 changed_fields = [] for field in instance._meta.fields: if getattr(instance, field.attname) != getattr(original_data, field.attname): changed_fields.append(field.name) if not changed_fields: # 如果没有字段值发生变化,则不保存修改记录 return # 创建修改记录 LogEntry.objects.create( action_time=instance.modified, # 你的模型中包含用于记录修改时间的字段 user_id=1, # 修改记录的用户ID,你可以根据实际情况进行调整 content_type_id=ContentType.objects.get_for_model(sender).pk, object_id=instance.pk, object_repr=str(instance), action_flag=CHANGE, change_message='Changed fields: {}'.format(', '.join(changed_fields)) ) ``` 然后,在你的应用的`apps.py`文件中注册信号处理函数。 ```python from django.apps import AppConfig class YourAppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'your_app_name' def ready(self): import your_app_name.signals # 修改为你的signals.py文件路径 ``` 最后,在你的应用的`__init__.py`文件中应用这个配置。 ```python default_app_config = 'your_app_name.apps.YourAppConfig' # 修改为你的apps.py文件路径 ``` 现在,当你修改了某个模型的数据时,修改记录将会被保存到`LogEntry`模型中。你可以根据实际需求进行调整,比如修改保存修改记录的方式、记录用户信息等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值