限制Django中外键关系的数量

kx5bkwkv  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(94)

在django中是否可以通过外键设置最大数量的关系?
例如,我希望有不超过10个职位由一个用户。我初始化模型

class Post(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

这张支票应该放在哪里?或者是不可能的,我应该让它在视图中?

h9a6wy2h

h9a6wy2h1#

我会这么做。
每个模型都有一个保存()选项,在保存模型时调用该选项。你可以在这里检查,如果用户已经有10个帖子,你可以抛出一个错误。

class Post(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    def save(self,*args, **kwargs):
        if self.id == None: #Creating a new object
            if Post.objects.filter(owner=self.owner).count() >= 10:
                #Raise whatever error you want or just return false
        return super(Post, self).save(*args, **kwargs)

相关问题