Django如何使用已保存在数据库中的多个字段更新对象

汉南

我正在尝试在Django中创建一个逻辑,以检查User是否已提供某些信息。如果不是,则创建新对象并保存在数据库中。信息已经存在,然后使用新信息更新同一对象。我犯了一个错误,因为它能够创建一个新对象但无法更新它。

try: # Check if user already have data available
    data_created_or_not = UserUsageInfo.objects.get(user_id=request.user.id).data_available_or_not
except Exception: # If not available than, make it false
    data_created_or_not = False
if not data_created_or_not: # If its False then create new object
    UserUsageInfo.objects.create(user=request.user,
                                 space_used=used_space,
                                 space_allocated=allocated_space,
                                 folders_list=folders,
                                 files_list=files,
                                 files_hash_list=files_hash,
                                 data_available_or_not=True
                                 )
else: # If already there then update it
    UserUsageInfo.objects.update(user=request.user,
                                 space_used=used_space,
                                 space_allocated=allocated_space,
                                 folders_list=folders,
                                 files_list=files,
                                 files_hash_list=files_hash,
                                 data_available_or_not=True
                                 )
威廉·范昂塞姆

您可以QuerySet.update_or_create为此使用

UserUsageInfo.objects.update_or_create(user_id=request.user.id,
                                       data_available_or_not=True,
                                       defaults={
                                           'user': request.user,
                                           'space_used': used_space,
                                           'space_allocated': allocated_space,
                                           'folders_list': folders,
                                           'files_list': files,
                                           'files_hash_list': files_hash,
                                        })

因此,这里我们将user_id=request.user.id用作过滤器data_available_or_not=True在存在的情况下,我们有更新defaults,否则,我们创建一个新的对象user_id=request.user.iddata_available_or_not=True和所有默认设置。

给定您使用的数据库引擎支持此操作,这可以导致单个查询。如果没有,Django可以模拟它(当然,它将花费多个查询)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用当前保存在数据库中的先前输入的数据填充输入字段?

保存按钮,一旦记录已保存在数据库中,也可以更新

如何更新数据库中的单个字段,Django

如何使用django框架发送图像文件而不保存在数据库中

如何在模型中保存字段而不将其持久保存在数据库中?

如何在不使用数据库的情况下将数据对象保存在数据网格中

Django多对多字段未正确保存在数据库中

如何检查用户电子邮件是否已保存在数据库中

Django MySQL-将多个记录一起保存在数据库中

Django:一次将多个条目保存在数据库中

使用视图或将其持久保存在数据库中的计算字段

如何使用PHP检查数据库中是否已存在数据?

如何使用 dexie 在索引数据库中保存对象,其中 1 个字段是对象数组?

如何使用ADO.NET和存储过程将复杂的C#对象保存在数据库中?

Django,如何仅获取保存在数据库中的最新数据?

如何检查多个按钮单击并将值保存在数据库中?

无法使用 Django 表单将数据保存在数据库中

使用jquery的多个选择框值未保存在数据库中?

如何在Django中编译保存在数据库中的模板

使用保存在数据库中的.jrtx

MVVM 使用 ICommand 保存在数据库中

如何通过Django将HTML代码保存在数据库中

使用Django将值保存在数据库中

Django使用用户名将文件保存在数据库中

如何使用自定义键将数据保存在数据库中?

如何在Laravel上使用Cast将数据json保存在数据库中?

Django-如何根据多个字段编辑数据库中的特定行?

如何使用laravel 8显示保存在数据库中的图像?

如何使用保存在数据库中的资源ID在imageview中加载图像