django是否有内置的方法来限制一对多关系可以拥有的对象数量?

时间:2016-01-20 02:55:34

标签: python django foreign-keys

我正在研究django中的一个项目,我有以下(缩写)用户类:

class CustomUser(AbstractBaseUser):
  max_files = models.IntegerField(default=5)

然后我有另一个班,

class File(models.Model):
  user = models.ForeignKey('CustomUser', on_delete=models.CASCADE)

django有没有办法做以下任何一种情况:

  1. 限制File班级CustomUser的数量(限制一对多外键字段中“many”的数量)为常数
  2. 以上,但使用User.max_files条目
  3. 而不是常数

    我目前没有任何数据库限制,但我打算使用MySQL,所以如果这是特定于数据库的,我假设我使用的是MySQL。

1 个答案:

答案 0 :(得分:0)

您可以覆盖模型的save()方法,以检查是否已超出最大数量。这里记录了覆盖模型方法:

https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model-methods

或者,如果您使用ModelForm,则可以按照Django文档页面上的说明实现验证:

https://docs.djangoproject.com/en/dev/ref/forms/validation/