如何防止灯具与 django post_save 信号代码冲突?

2024-05-13

在我的应用程序中,我想在新用户注册时在某些表中创建条目。例如,我想创建一个用户配置文件,然后该配置文件将引用他们的公司和他们的一些其他记录。我用 post_save 信号实现了这一点:

def callback_create_profile(sender, **kwargs):
    # check if we are creating a new User
    if kwargs.get('created', True):
        user = kwargs.get('instance')
        company = Company.objects.create(name="My Company")
        employee = Employee.objects.create(company=company, name_first=user.first_name, name_last=user.last_name)
        profile = UserProfile.objects.create(user=user, employee=employee, partner=partner)
# Register the callback
post_save.connect(callback_create_profile, sender=User, dispatch_uid="core.models")

这在运行时效果很好。我可以使用管理员创建一个新用户,其他三个表也可以获取合理的条目。 (除此之外,由于 user.first_name 和 user.last_name 在保存时没有在管理员表单中填写,因此我仍然不明白为什么要这样做)

当我运行测试套件时,问题出现了。在此之前,我创建了一堆固定装置来在表中创建这些条目。现在我收到一条错误消息:

IntegrityError: duplicate key value violates unique constraint "core_userprofile_user_id_key"

我认为这是因为我已经在 ID 为“1”的装置中创建了一家公司、员工和个人资料记录,现在 post_save 信号正在尝试重新创建它。

我的问题是:运行灯具时可以禁用此 post_save 信号吗?我可以检测到我正在作为测试套件的一部分运行而不创建这些记录吗?我现在应该从灯具中删除这些记录吗(尽管信号仅设置默认值而不是我想要测试的值)?为什么夹具加载代码不覆盖创建的记录?

人们如何做到这一点?


我想我找到了一种方法来做到这一点。与信号一起传入的 kwargs 中有一个“原始”参数,因此我可以用以下参数替换上面的测试:

if (kwargs.get('created', True) and not kwargs.get('raw', False)):

当loaddata运行时使用Raw。这似乎可以解决问题。

这里提到:http://code.djangoproject.com/ticket/13299 http://code.djangoproject.com/ticket/13299

如果这被记录下来就好了:http://docs.djangoproject.com/en/stable/ref/signals/#django.db.models.signals.post_save http://docs.djangoproject.com/en/stable/ref/signals/#django.db.models.signals.post_save

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止灯具与 django post_save 信号代码冲突? 的相关文章

  • django render_to_string 缺少信息

    为什么我的电子邮件 正文部分 不包含该消息 这是我的代码 message render to string contact template txt contact name contact name contact email conta
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • 按 ListProperty (NDB) 对查询进行排序

    如何按 ListProperty 对查询进行排序 该模型 class Chapter ndb Model title ndb StringProperty required True version ndb IntegerProperty
  • 使用 python 通过搜索端点从 Spotify API 获取曲目

    因此 我尝试使用 API 的搜索端点进行搜索 从而从 Spotify API 获取曲目 请参阅文档 https developer spotify com documentation web api reference search sea
  • 运行源代码中包含 Unicode 字符的 Python 2.7 代码

    我想运行一个在源代码中包含 unicode utf 8 字符的 Python 源文件 我知道这可以通过添加评论来完成 coding utf 8 在一开始的时候 但是 我希望不使用这种方法来做到这一点 我能想到的一种方法是以转义形式编写 un
  • Python 3.x 中的 PIL ImageTk 等效项

    我正在使用 Tkinter 开发一个应用程序 它使用以下数据库png图标的图像文件 为了在应用程序中使用所述图像 我使用 PIL 打开它们Image open 运行它通过ImageTk PhotoImage函数 然后将其传递给小部件构造函数
  • 超时时杀死或终止子进程?

    我想尽可能快地重复执行子进程 然而 有时这个过程会花费太长的时间 所以我想杀死它 我使用 signal signal 如下所示 ppid pipeexe pid signal signal signal SIGALRM stop handl
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • django 模板和列表字典

    我正在使用 django 的模板系统 但遇到以下问题 我将一个字典对象 example dictionary 传递给模板 example dictionary key1 value11 value12 我想做以下事情 for key in
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 通过套接字发送字符串(python)

    我有两个脚本 Server py 和 Client py 我心中有两个目标 能够从客户端一次又一次地向服务器发送数据 能够将数据从服务器发送到客户端 这是我的 Server py import socket serversocket soc
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • Synapse Notebook 参考 - 使用参数从另一个笔记本调用 Synapse Notebook

    我有一个带有参数的突触笔记本 我试图从另一个笔记本调用该笔记本 我正在使用 run 命令 我应该如何将参数从基本笔记本传递到正在调用的笔记本 另外 对我来说 上述答案不起作用 作为对此问题的单独解决方案 下面是一个答案 打开笔记本并转到最右
  • 在 Gensim 中通过 ID 检索文档的字符串版本

    我正在使用 Gensim 进行一些主题建模 并且已经达到使用 LSI 和 tf idf 模型进行相似性查询的程度 我取回 ID 集和相似点 例如 299501 0 64505910873413086 如何获取与 ID 在本例中为 29950
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • python IDLE shell 似乎无法正确处理一些转义

    例如 b 退格键打印为四元 在下面的示例中显示为 但是 n 换行是可以的 gt gt gt print abc bd abc d gt gt gt print abc nd abc d 我在 Vista pro python 2 7 下运行
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l

随机推荐

  • 如何在Android中正确找到本机lib路径?

    我正在尝试遵循以下建议https issuetracker google com issues 128554619 comment4 https issuetracker google com issues 128554619 commen
  • iPhone CGContext:用两种不同颜色绘制两条线

    我在 iPhone 应用程序中使用 CGContext 时遇到一些问题 我试图用不同的颜色绘制几条线 但所有线最终总是具有最后使用的颜色 我尝试了几种方法 但并不幸运 我建立了一个小型示例项目来处理这个问题 这是我的代码 我在drawRec
  • 增量SQL查询

    我的应用程序有一组固定的 SQL 查询 这些查询以轮询模式运行 每 10 秒一次 由于数据库的大小 gt 100 GB 和设计 超级规范化 我遇到了性能问题 每当数据库上发生更改查询结果的 CRUD 事件时 是否可以对给定查询进行增量更改
  • Phoenix 中的 web/static 和 priv/static 有什么区别?

    我对长生不老药和凤凰是新手 现在我在凤凰城的静态资产方面遇到了麻烦 我想在我的页面中添加一个js文件 我在我的模板中添加以下代码 js test js gt gt 然后创建一个js文件web static js test js 但是 我收到
  • 应用于整个 HTML 的 BODY 标签的背景颜色[重复]

    这个问题在这里已经有答案了 我对 html 中 body 标签的大小感到困惑 我有一个艰难的代码如下 body padding 0px height 100px background color e5e5e5 为什么背景覆盖整个页面 我认为
  • 向 jQuery 函数 Interval 添加动画

    我的问题是如何向倒计时器添加一些动画 我的意思是每次调用 Function Interval 时都需要添加一些动画 如下所示 youtube 视频链接 https www youtube com watch v A9fnvhcWPRo 第二
  • 根据窗口大小调整 div 及其内部内容的大小

    我已经查找了一百万种技术 但我无法让它发挥作用 我知道还有其他类似的帖子 如果它给任何人带来麻烦 我很抱歉 但我需要针对我的代码的具体说明 因为我很愚蠢 提前非常感谢 我希望 div 容器 contentContactBox 以及其中的所有
  • 使用特定 HTTP 方法链接到页面 (DELETE)

    如何像 Rails 那样链接到页面并让浏览器使用 DELETE 方法调用它 我试过 a href DELETE ME a 但不起作用 我使用 Node js 所以我可以用它来处理 DELETE 方法 你不能 链接只会触发 GET 请求 您可
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • File.delete 上的 Ruby (Errno::EACCES)

    我试图在使用完一些 XML 文件后删除它们 其中一个文件给了我这个错误 delete Permission denied monthly builds xml Errno EACCES Ruby 声称该文件受到写保护 但我在尝试删除它之前设
  • 将此 XML 反序列化为对象的最佳方法

    在我见过的与我的类似的其他示例中 有一个根节点 然后是一个数组节点 然后是一堆数组项 我的问题是 我的根节点is我的数组节点 所以我见过的示例似乎不适合我 而且我无法更改 XML 架构 这是 XML
  • ASP.Net 的最佳免费文件管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 如何在 kivy FileChooser Python 中访问所有硬盘

    如何使用 kivy 1 11 1 中的列表视图或图标视图在 kivy FileChooser 中显示系统 C X J 中安装的所有硬盘驱动器 我遇到了同样的问题 最终通过为驱动器添加 快捷方式 按钮解决了这个问题 我首先使用以下命令获取所有
  • SQL Server 表中最多可以有多少行

    通常我们可以给出更多的值 在SQL Server中一个表最多可以有多少行 之后我们就无法添加新行了 有一些边缘情况 除了明显的磁盘空间问题之外 SQL Server 会阻止您添加更多行 而不是确切的行数 但值得一提 你有一个IDENTITY
  • 输出和导出之间的区别

    在 CloudFormation 中 我们能够从模板输出一些值 以便其他进程 堆栈等可以检索它们 这通常是某个名称 可能是 URL 或在堆栈创建 部署 过程中生成的名称等 我们还能够从模板 导出 返回值作为 输出 与 导出 之间有什么区别
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • 如何防止灯具与 django post_save 信号代码冲突?

    在我的应用程序中 我想在新用户注册时在某些表中创建条目 例如 我想创建一个用户配置文件 然后该配置文件将引用他们的公司和他们的一些其他记录 我用 post save 信号实现了这一点 def callback create profile