我有一个模型,我只想从中创建一个实例,并且不应允许更多实例。
这可能吗?我有一种感觉,我在某个地方看到过这种做法,但不幸的是我无法找到它。
编辑:
我需要这个来构建一个极其简单的 CMS。我有一个 FrontPage 和 Page 类继承的抽象类。我只希望能够创建一个 Frontpage 对象。
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 管理 UI 实际上会报告创建情况failed原因是“只能创建 1 个示例实例”(而文档中的早期返回方法没有说明为什么保存不起作用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)