首页 > 解决方案 > 使用专门的访问器为 django 模型创建外键

问题描述

我希望工人能够监督其他工人。工人不需要主管。他们无法监督自己。(我不关心循环)

我不确定最 django 标准的方式来解决这个问题。我可以创建一个自定义 setter 函数,但我注意到模型仍然有supervisorand 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()

标签: pythondjangoforeign-keys

解决方案


推荐阅读