限制要创建的模型实例数-Django
我有只希望从中创建一个实例的模型,不应再允许更多实例。
这可能吗?我有感觉到已经在某处完成了此操作,但是很遗憾,我无法找到它。
编辑:我需要一个愚蠢的简单CMS。我有一个FrontPage和Page类继承的抽象类。我只希望能够创建一个首页对象。
FrontPage对象和Page对象之间的区别在于,它们应该具有略有不同的字段和模板,并且如上所述,只能创建一个FrontPage。
回答:
我想自己做类似的事情,发现Django的模型验证为执行提供了便利:
from django.db import modelsfrom 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