python - 使用专门的访问器为 django 模型创建外键
问题描述
我希望工人能够监督其他工人。工人不需要主管。他们无法监督自己。(我不关心循环)
我不确定最 django 标准的方式来解决这个问题。我可以创建一个自定义 setter 函数,但我注意到模型仍然有supervisor
and supervisor_id
,可以直接写入,绕过我的要求。
这就是我所拥有的,但它告诉我“AttributeError:'ForeignKey'对象没有属性'setter'”
class Worker(models.Model):
supervisor = models.ForeignKey(Worker, blank=True, null=True, on_delete=models.CASCADE)
@supervisor.setter
def assign_supervisor(self, s_id):
if s_id == self.id:
raise Error("can't supervise yourself!")
self.supervisor_id = s_id
self.save()
解决方案
推荐阅读
- php - 如何从 PHP 中的字符串中获取表达式?
- python-3.x - Python 不正确的值
- html - 如何在图像悬停时创建深色淡入淡出+文字?
- javascript - 为什么我下面的 IIFE 代码只与 clickEvent 一起工作一次
- javascript - Javascript函数不起作用,出了什么问题?
- c - 如何在 C 中转置 2D 矩阵?
- ruby-on-rails - 运行测试时的 ElasticSearch Rails resource_already_exists_exception
- java - 我可以使用 Inno Setup 为 Java 应用程序创建独立的 .exe 安装程序吗?
- java - 当我想将 Log4j 添加到依赖项时,Maven-plugin-plugin:descriptor 目标失败
- c - 如何将 32 位整数的位模式存储在 C 中 0 和 1 的 32 长度字符串中