You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Django SQLite数据库的模型条目数量?附示例需求

实现Django模型数据条数限制(最多2条)

当然可以实现这个需求!我们可以通过重写模型的clean()和save()方法,从模型层面限制数据条数,同时在Django Admin面板给出清晰的错误提示。

修改后的About模型代码

from django.core.exceptions import ValidationError
from django.db import models

class About(models.Model):
    firstname = models.CharField(max_length=500)
    lastname = models.CharField(max_length=500, blank=True)
    address = models.TextField()
    details = models.TextField()

    class Meta:
        verbose_name_plural = 'About'

    def __str__(self):
        return self.firstname

    def clean(self):
        # 先调用父类的clean方法,保证原有验证逻辑正常执行
        super().clean()
        # 统计已有的数据条数,排除当前实例(处理编辑场景)
        existing_count = About.objects.exclude(pk=self.pk).count()
        if existing_count >= 2:
            raise ValidationError("数据库已达上限,无法存储,请先删除旧数据")

    def save(self, *args, **kwargs):
        # 保存前强制执行校验,防止通过代码直接创建数据绕过Admin验证
        self.clean()
        super().save(*args, **kwargs)

代码说明

  • clean()方法:这个方法会在Django Admin的表单验证阶段被调用,用户点击保存按钮时会立刻看到错误提示,体验非常友好。用exclude(pk=self.pk)排除当前实例,是为了避免编辑已有的2条数据时触发错误,只有添加新数据且已有2条时才会报错。
  • save()方法:在保存前再次调用clean(),是为了防止有人通过Django Shell、API或其他代码直接创建数据,绕过Admin的表单验证,确保从模型层面彻底限制数据条数。

这样设置后,当你在Admin面板尝试添加第3条About数据时,就会弹出你想要的提示信息,无法完成保存;同时通过代码创建数据时也会抛出对应的ValidationError,保证数据条数的严格限制。

内容的提问来源于stack exchange,提问作者Vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:17:55