限制要创建的模型实例数-Django

我有只希望从中创建一个实例的模型,不应再允许更多实例。

这可能吗?我有感觉到已经在某处完成了此操作,但是很遗憾,我无法找到它。

编辑:我需要一个愚蠢的简单CMS。我有一个FrontPage和Page类继承的抽象类。我只希望能够创建一个首页对象。

FrontPage对象和Page对象之间的区别在于,它们应该具有略有不同的字段和模板,并且如上所述,只能创建一个FrontPage。

回答:

我想自己做类似的事情,发现Django的模型验证为执行提供了便利:

from django.db import models

from django.core.exceptions import ValidationError

def validate_only_one_instance(obj):

model = obj.__class__

if (model.objects.count() > 0 and

obj.id != model.objects.get().id):

raise ValidationError("Can only create 1 %s instance" % model.__name__)

class Example(models.Model):

def clean(self):

validate_only_one_instance(self)

这不仅会阻止创建新实例,而且Django管理员界面实际上会报告创建失败,其原因是“只能创建1个实例实例”(而文档中的早期返回方法并未说明为什么保存无效)。

以上是 限制要创建的模型实例数-Django 的全部内容, 来源链接: utcz.com/qa/400926.html

回到顶部