如何为Django Guardian对象级别权限添加其他unique_together约束?

时间:2019-01-02 19:32:21

标签: django django-guardian

使用example from the docs,假设我有一个Task模型:

class Task(models.Model):
    summary = models.CharField(max_length=32)
    content = models.TextField()
    reported_by = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        permissions = (
            ('view_task', 'View task'),
        )

假设我的应用程序上有很多用户,并且我想确保在数据库级别满足以下要求:

  • 没有用户有重复的任务,即,一个用户只能有一个名为“扫地”的任务。
  • 用户不共享任务。例如,如果两个用户的任务为“扫地”,则应该有两个任务为summary“扫地”。在后端,两个用户各一个
  • 我无法在user模型上添加Task字段-我必须通过权限分配Task对象的所有权

现成的django_guardian UserObjectPermission具有以下unique_together约束:

unique_together = ['user', 'permission', 'object_pk']

认为我要寻找的是一个unique_together约束,它更像是此伪代码:

unique_together = ['user', 'permission', 'object_pk', 'task__summary']

或者,还有另一种方法可以使用Django Guardian权限在数据库级别实施这种唯一性吗?

0 个答案:

没有答案