python - 如果在其他两个类中不存在,如何在 Python Django 中创建一个新对象?

标签 python django

模型中有两个类 - Task 和 TaskArchives。如果 Task 和 TaskArchives 中都不存在,我需要创建一个新任务。我已经尝试使用 and 子句检查 DoesNotExist 异常。但它不起作用。有人可以建议不同的方法吗??

for event in events:
        try:
            obj = Task.objects.get(task_id = event['id'])
            obj_archive = TaskArchive.objects.get(task_id = event['id'])

        except Task.DoesNotExist and TaskArchive.DoesNotExist:
            obj = Task.objects.create(
            task_id = event['id'],
            title = event['summary'],
            created_by = User.objects.get(email=event['creator']['email']),
            status = "upcoming",
            due_date = event['start']['dateTime']
            ) 

提前致谢, 瑞努。

最佳答案

您可以尝试使用 QuerySet 的 exists()功能。如果 QuerySet 包含任何结果,它返回 True,否则返回 False

所以,对于上面的例子,我会写:

if not Task.objects.filter(task_id = event['id']).exists() and
   not TaskArchive.objects.filter(task_id = event['id']).exists:
    # no object satisfying query exists
else:
    # at least one object satisfying query exists

关于python - 如果在其他两个类中不存在,如何在 Python Django 中创建一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738799/

相关文章:

python - 在 Apache 上使用 mod_wsgi、python 和 django 进行热部署

python - django 身份验证注销功能是否删除 django_session 表中的 session 行?

python - 编译和安装 cantera python 模块时遇到问题

python - 验证和登录之间有什么区别?

django - 使用 Django 设置缓存来解决 "page has expired"IE 问题

python - 使用python以循环方式裁剪图像

Django 模板,如果标记基于当前 URL 值

python - Python启动横幅在哪里定义的?

python - PyQt QLineEdit 与 QValidator

python - 如何获取带有与浏览器 View 而不是 html 源匹配的换行符的文本(使用 python 和 beautifulsoup)